子串 - 参数超出范围异常 - startIndex参数

时间:2016-06-29 10:41:16

标签: .net vb.net string substring

假设我在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中自动更改文本,如何在不按下按钮的情况下使文本框填充数据?

2 个答案:

答案 0 :(得分:1)

你的第二个参数是&的指数。当你从索引0开始,但你开始在指数%。因此,您需要从& Index。

中减去%Index
TextBox3.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)

$http call to the users object