它不会让我输入少于五个字母的姓氏
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"
答案 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
的代码效率低一些,所以要小心在紧密的循环中使用它,但对于看起来像是完成它的东西应该没问题一次通过。