我试图在给定的单词之后得到字符串。以下是代码。
private static string GetStringAfterWord(string text, int position)
{
if (text.Length - 1 < position || text[position] == ' ') return null;
int start = position;
int end = position;
while (end < text.Length - 1 )
end++;
return text.Substring(start, end);
}
此代码总是给我这个错误:System.ArgumentOutOfRangeException:索引和长度必须引用字符串中的位置。
不是string.Length返回总字符数,为什么总是超出范围。我做错了吗?
答案 0 :(得分:1)
应该是:
if (text.Length - 1 < position || position < 0 || text[position] == ' ')
并替换
while (end < text.Length - 1 )
end++;
与
end = text.Length - start;
答案 1 :(得分:1)
string.SubString
的第二个参数是子串的长度。
在您的示例中,您说的是grab the string starting at <start> and is <end> characters long
。如果start
为2并且字符串的长度为11,那么end
将为10 ..如果加在一起会产生12(10 + 2 = 12 ..而字符串的长度为11 )。
你需要这个:
return text.Substring(start, end - start);
..而且:
while (end < text.Length)
答案 2 :(得分:1)
Substring()
方法的第二个参数不是索引,而是长度。