选择字符串中的字符
Selecting Characters In String
我可以按顺序从 sum2.text 中抓取每 2 个字符 (102030) 我得到 10,20,30
但我的问题是,select按顺序准确输入这些数字 10、20、30
我当前的代码输出如下:msgbox(10) msgbox(20) msgbox(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。只是想一想。
我可以按顺序从 sum2.text 中抓取每 2 个字符 (102030) 我得到 10,20,30 但我的问题是,select按顺序准确输入这些数字 10、20、30 我当前的代码输出如下:msgbox(10) msgbox(20) msgbox(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。只是想一想。