我是VB的新手,我遇到了以下代码的一些问题。
Dim random As String = "asfdgasfdgasfdgasfd11"
Dim length As Integer = Nothing
length = random.Length
Console.WriteLine(random.Length)
Console.WriteLine(length)
Console.WriteLine()
Console.WriteLine()
Console.ReadLine()
If length <= 20 Then
Console.WriteLine(random.Substring(0, length))
ElseIf length <= 40 Then
Console.WriteLine(random.Substring(0, 20))
Console.WriteLine(random.Substring(20, length))
End If
Console.ReadLine()
错误:
“类型'System.ArgumentOutOfRangeException'的未处理异常 发生在mscorlib.dll
附加信息:索引和长度必须指代某个位置 在字符串“
中
我认为错误是由于{20
,length
)而发生的。我试图将长度分配给变量,这样程序就不会崩溃,除非尝试是特定数量的字符。
我正在尝试使用任何给定长度的变量,如果它大于20个字符,则每行只打印20个字符。
答案 0 :(得分:1)
附加信息:索引和长度必须指代某个位置 在字符串
中
这就是重点。在你的第二个WriteLine中,你要求从第20个字符开始打印random
字符串(起始索引ok,有21个字符)但是它要求打印21个字符(长度= 21)。
是的,startindex + length = 41且超出了字符串限制
您可以尝试使用
修复该行Console.WriteLine(random.Substring(20, length - 20))
或引入一个while循环,在时间打印20个字符
length = random.Length
Console.WriteLine(random.Length)
Console.WriteLine(length)
Console.WriteLine()
Console.WriteLine()
Console.ReadLine()
Dim curStart = 0
Dim loopCounter = 0
while(curStart < random.Length)
Console.WriteLine(random.Substring(curStart, System.Math.Min(20, length - 20 * loopCounter)))
curStart = curStart + 20
loopCounter = loopCounter + 1
End While