我有这段代码:
string Str = "<String><MoreString>";
int Start = Str.LastIndexOf('<') + 1;
int End = Str.IndexOf('>', Start);
string S = Str.Substring(Start, End);
如果Str只是"<String>"
,那么它工作正常,但如果Str是"<String><MoreString>"
,那么它会抛出索引超出范围的错误。是因为“&lt;”,“&gt;”字符?
答案 0 :(得分:7)
Substring不能像这样工作。
示例:
String myString = "abc";
bool test1 = myString.Substring(2, 1).Equals("c"); // This is true.
第二个参数是你要选择的字符数,所以你应该这样做:
string S = Str.Substring(Start, End-Start);
答案 1 :(得分:1)
正如您可以看到当您将鼠标悬停在Str.Substring
函数上时,您会看到此函数的第二个参数为length
这将有效
string Str = "<String><MoreString>";
int Start = Str.LastIndexOf('<') + 1;
int End = Str.IndexOf('>', Start);
string S = Str.Substring(Start, End - Start);