在特定字符/单词之间插入空格

时间:2018-06-20 14:21:36

标签: vb.net

我有以下字符串:

15 + power ( 10,5 ) + 5 + power ( 1,5 )

我的目标是在逗号之间放置一个空格,并以如下字符串结尾:

15 + power ( 10 , 5 ) + 5 + power ( 1 , 5 )

我尝试用空格分割字符串,并获取“ power”的索引(inputtedString是代码的第一行):

"15 + power ( 10,5 ) + 5 + power ( 1,5 )".Split(" ").Select(Function(b, i) If(b = "power", i, -1)).Where(Function(i) i <> -1)

但是,我在继续操作时遇到了麻烦:即使我将10,5分为10和5,我也无法在foreach循环中将其插入到列表中。

我想我可以创建一个字典来将这些要修改和要插入的项目存储到列表中,或者在foreach循环中创建一个新列表,但是我认为这不是最干净的解决此问题的最简单方法。

Edit1 :我不能使用string.Replace(“,”,“,”),因为我只能修改'power()'标记内的值

2 个答案:

答案 0 :(得分:1)

您可以尝试以下解决方案:

Dim str As String = "15 + power ( 10,5 ) + 5 + power ( 1,5 )"
Dim rgx As New Regex("([ ]*),([ ]*)")
Dim result As String = rgx.Replace(str, " , ")
Debug.Print(result) '15 + power ( 10 , 5 ) + 5 + power ( 1 , 5 )

答案 1 :(得分:0)

我确信Sebastian的回答很好,但是我对Regex还不满意,所以我在两行代码中也有一个没有regex。

Private Sub btnAddSpaces_Click(sender As Object, e As EventArgs) Handles btnAddSpaces.Click
        Dim OriginalString As String = "15 + power ( 10,5 ) + 5 + power ( 1,5 )"
        Dim StringArray() As String = OriginalString.Split(","c)
        Dim NewString As String = Join(StringArray, " , ")
        Debug.Print(NewString)
End Sub