XML字符串索引超出范围

时间:2011-12-16 12:28:07

标签: c#

我有这段代码:

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;”字符?

2 个答案:

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