如何在VB中使用子串?

时间:2017-10-20 11:56:41

标签: vb.net

它不会让我输入少于五个字母的姓氏

    Dim firstintial As String 
    Dim form As String
    Dim secondname As String


    form = TextBox3.Text
    firstintial = TextBox4.Text
    secondname = TextBox5.Text

    firstintial = firstintial.Substring(0, 2)
    secondname = secondname.Substring(0, 5)


    Dim newusername As String
    newusername = form & secondname & firstintial
    TextBox6.Text = newusername

    Dim newpassword As String
    newpassword = TextBox7.Text
    TextBox8.Text = newpassword



    If TextBox7.Text = TextBox12.Text Then
        Label13.Text = "correct"
    Else
        Label13.Text = "try again"

3 个答案:

答案 0 :(得分:1)

Substring不喜欢index + length表示字符串之外的位置。

Dim length = Math.Min(firstintial.Length, 2)
firstintial = firstintial.Substring(0, length)
length = Math.Min(secondname.Length, 5)
secondname = secondname.Substring(0, length)

答案 1 :(得分:1)

虽然许多人不喜欢使用特定于Visual Basic的方法而不是.NET框架方法,但您可以使用Left来处理请求的长度大于字符串的长度:

secondname = Left(s, 5)

但是,如果您在控件的代码中使用它,则会优先选择Control.Left属性,因此您需要对其进行限定:

secondname = Strings.Left(s, 5)

答案 2 :(得分:0)

您可以使用Linq的Take来获取未经明确测试的字符数:

Dim firstinitial = New String(TextBox4.Text.Take(2).ToArray())
Dim secondname = New String(TextBox5.Text.Take(5).ToArray())

我希望这比基于Substring的代码效率低一些,所以要小心在紧密的循环中使用它,但对于看起来像是完成它的东西应该没问题一次通过。