0

我是 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()

错误:

" 在 mscorlib.dll 中发生了“System.ArgumentOutOfRangeException”类型的未处理异常

附加信息:索引和长度必须引用字符串中的位置“

我认为错误是由于 ( 20, length)) 而发生的。我试图将长度分配给一个变量,这样程序就不会崩溃,除非尝试的是特定数量的字符。

我试图拥有任何给定长度的变量,如果它大于 20 个字符,则每行只打印 20 个字符。

4

1 回答 1

1

附加信息:索引和长度必须引用字符串中的位置

这才是重点。在您的第二个 WriteLine 中,您要求打印random从第 20 个字符开始的字符串(起始索引正常,有 21 个字符),但随后它要求打印 21 个字符(长度 = 21)。
是的,startindex + length = 41 超出了字符串限制

你可以尝试用

Console.WriteLine(random.Substring(20, length - 20))

或引入一次打印 20 个字符的 while 循环

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
于 2013-01-13T23:59:52.970 回答