选择字符串中的字符

Selecting Characters In String

我可以按顺序从 sum2.text 中抓取每 2 个字符 (102030) 我得到 10,20,30 但我的问题是,select按顺序准确输入这些数字 10、20、30 我当前的代码输出如下:msgbox(10) msg​​box(20) msg​​box(30) 但不会 select 并按顺序逐个替换这些确切的数字

我的代码:

            For i = 0 To sum2.Text.Length - 1 Step 2 'grabs every 2 chars
            Dim result = (sum2.Text.Substring(i, 2)) 'this holds the 2 chars
            MsgBox(result) 'this shows the 2 chars
            sum2.SelectionStart = i 'this starts the selection at i                                                                            
            sum2.SelectionLength = 2 'this sets the length of selection (i)                                     
            If sum2.SelectedText.Contains("10") Then 
                sum2.SelectedText = sum2.SelectedText.Replace("10", "a")
            End If
            If sum2.SelectedText.Contains("20") Then
                sum2.SelectedText = sum2.SelectedText.Replace("20", "b")
            End If
            If sum2.SelectedText.Contains("30") Then
                sum2.SelectedText = sum2.SelectedText.Replace("30", "c")
            End If

我的问题是它会正确地一一显示 sum2 中的数字,但它会 select 并完全替换或一一替换。我认为问题出在 select 离子长度

这里有一些代码可以帮助您入门:

      For i = 0 To sum2.SelectedText.Length - 1 Step 2
         MessageBox.Show(sum2.SelectedText.Substring(i, 2))
      Next

好的,根据我的理解,这是我的尝试。问题是,当您将“10”替换为 "a" 时,您正试图更改循环使用的字符串,因此您需要创建一个变量来保存新构建的字符串。

    Dim part As String = ""
    Dim fixed As String = ""
    For i = 0 To Sum2.SelectedText.Length - 1 Step 2
        part = Sum2.SelectedText.Substring(i, 2)
        Select Case part
            Case "10"
                part = part.Replace("10", "a")
            Case "20"
                part = part.Replace("20", "b")
            Case "30"
                part = part.Replace("30", "c")
        End Select
        fixed &= part
    Next

    Sum2.SelectedText = fixed

当然,这只是为了展示在字符串中移动并更改它的工作原理。您需要用新格式化的结果替换您选择的文本(在这种情况下已修复)

结果:ab3077328732

此外,请注意,如果这种格式不会干扰 2 位数字,您可以简单地执行

sub2.selectedtext.replace("10", "a").Replace("20", "b").Replace...

但是,如果您在 05 旁边有 2 个数字,例如 11,它将无法给出所需的结果,因为如果将 1105 更改为 1a5。只是想一想。