子字符串期间参数超出范围异常

时间:2014-09-09 08:09:19

标签: vb.net

嗨,我有一个这样的字符串:

CurrentDate-[8]>15&CurrentDate-[8]<1000&[11]=HANWHA

我希望将其剪切为3个字符串,如:

CurrentDate-[8]>15
CurrentDate-[8]<1000
[11]=HANWHA

这是我削减公式的功能

Public Shared Function Cut(formula As String, numberOfConditions As Integer) As String()
    Dim Parts(numberOfConditions) As String

    Dim startPoint As Integer = 0
    Dim curCondition As Integer = 0

    For i As Integer = 0 To formula.Length() - 1
        If formula(i) = "&" Then
            Parts(curCondition) = formula.Substring(startPoint, i - 1) ' here error occures when curCond = 1

            curCondition += 1
            startPoint = i + 1

        End If
    Next

    Parts(curCondition) = formula.Substring(startPoint)

    Return Parts
End Function

错误时,我启动函数公式是我上面写的,numberOfConditions是2。 所以我制作数组(0-2),并希望把它放在那里。但是在curCcondition = 1期间,当我想要从19到39的子串时,我得到了(公式长度为59)。怎么可能?

最后一步是对最后一个元素进行子串(例如,当没有&amp; i不想要切割任何东西或者得到最后一个部分时(我不会用&amp; #t结尾) ;))

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

String.Substring(startPoint, i - 1)中的第二个参数不是结束索引而是长度。所以你需要从起点减去索引:

Parts(curCondition) = formula.Substring(startPoint, i - startPoint )

顺便说一句,您可以使用String.Split以更易读的方式获得相同的结果:

Dim cut = "CurrentDate-[8]>15&CurrentDate-[8]<1000&[11]=HANWHA".Split({"&"c}, 3)