选择字符串中的字符

时间:2017-06-26 17:45:23

标签: string vb.net chars

我可以从sum2.text获取每2个字符(102030)我得到10,20,30 但我的问题是,按顺序精确选择那些数字10,20,30 我目前的代码输出:msgbox(10)msgbox(20)msgbox(30)但不会按顺序选择和替换那些确切的数字

我的代码:

            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中的数字,但它会选择和替换所有或逐个替换。我认为问题在于选择长度

2 个答案:

答案 0 :(得分:0)

以下是一些可以帮助您入门的代码:

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

答案 1 :(得分:0)

好的,我的尝试来自于我理解你想要做的事情。问题是,当你替换" 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...

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