Visual Basic .substring错误

时间:2013-01-13 23:49:45

标签: vb.net

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

     

附加信息:索引和长度必须指代某个位置   在字符串“

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

我正在尝试使用任何给定长度的变量,如果它大于20个字符,则每行只打印20个字符。

1 个答案:

答案 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