假设我在TextBox1中有以下字符串:FPO100200%10& FORD *
现在,我还有两个文本框可以从textbox1的子字符串中获取数据。我有以下代码:
Public Class Form1
Private Function textmoves(mytext As String, indexchar As String)
Dim Index As Integer = mytext.IndexOf(indexchar)
Return Index
End Function
Private Sub Splittext()
Dim text As String = TextBox1.Text
TextBox2.Text = text.Substring(0, textmoves(text, "%"))
TextBox3.Text = text.Substring(textmoves(text, "%"), textmoves(text, "&"))
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Splittext()
End Sub
结束班
我试图在texbox2中输入子串FPO100200,然后在texbox3中输入子串10。
一旦我添加了带有textbox3的行,就会向我抛出一个超出范围错误的参数。你能告诉我我做错了什么吗?非常感谢!
LE:另外,如果在文本框1中自动更改文本,如何在不按下按钮的情况下使文本框填充数据?
答案 0 :(得分:1)
你的第二个参数是&的指数。当你从索引0开始,但你开始在指数%。因此,您需要从& Index。
中减去%IndexTextBox3.Text = text.Substring(textmoves(text, "%"), textmoves(text, "&") - textmoves(text, "%"))
答案 1 :(得分:1)
第二个参数是长度,而不是结束位置。第一个表达式与position一起使用的原因是初始索引为零。
要"10"
使用
TextBox3.Text = text.Substring(textmoves(text, "%")+1, textmoves(text, "&")-textmoves(text, "%")-1)
或更好
Dim pos As Integer = textmoves(text, "%")
TextBox2.Text = text.Substring(0, pos)
TextBox3.Text = text.Substring(pos+1, textmoves(text, "&")-pos-1)