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

Vb.net 子字符串期间参数超出范围异常,vb.net,Vb.net,嗨,我有一根这样的线: CurrentDate-[8]>15&CurrentDate-[8]<1000&[11]=HANWHA 在错误期间,当我启动函数时,公式是我上面写的,numberOfConditions是2。 所以我做了一个数组(0-2)并想把这些部分放进去。但是在curCcondition=1的过程中,当我想将子串从19分到39时,我得到了它(公式长度是59)。怎么可能呢 最后一步是对最后一个元素进行子串(例如,当没有&我不想剪切任何内容或获取最后一部分时

嗨,我有一根这样的线:

CurrentDate-[8]>15&CurrentDate-[8]<1000&[11]=HANWHA
在错误期间,当我启动函数时,公式是我上面写的,numberOfConditions是2。 所以我做了一个数组(0-2)并想把这些部分放进去。但是在curCcondition=1的过程中,当我想将子串从19分到39时,我得到了它(公式长度是59)。怎么可能呢

最后一步是对最后一个元素进行子串(例如,当没有&我不想剪切任何内容或获取最后一部分时(我不以&)结束最后一部分)


有人能帮我吗?

字符串中的第二个参数。子字符串(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)

Dim cut=“CurrentDate-[8]>15&CurrentDate-[8]如果(MyString.Length>=startPoint)将子字符串行包装在if语句中此外,您还应该研究String.Split方法的使用。如果有特定的分隔字符,可能更容易实现。@JakubWisniewski:注意,我已经编辑了它,您可以使用
String.Split
进行相同的操作。在Split 3中有多少个拆分?c代表什么?cut?@JakubWisniewski:
“&“c
是一个字符,
c
告诉编译器这是一个
Char
-literal(与c#中的撇号相同)。所以
{“&”c}
是一个带有单个字符的
Char()
。3只是string.split的重载,可用于指定应拆分部分的最大计数。因此,如果有三个以上的部分,你仍然只能得到前三个部分。以下是文档:
Parts(curCondition) = formula.Substring(startPoint, i - startPoint )
Dim cut = "CurrentDate-[8]>15&CurrentDate-[8]<1000&[11]=HANWHA".Split({"&"c}, 3)