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

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)时,我得到了。这怎么可能 ?

最后一步是对最后一个元素进行子串化(例如,当不存在&我不想削减任何东西或获得最后一部分(我不以&结束最后一部分)时)

有人可以帮助我吗?

最佳答案

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)

关于vb.net - 子字符串期间参数超出范围异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25739595/

10-09 03:11