0

我试图在给定单词之后获取字符串。下面是代码。

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 不是返回总字符数,为什么总是超出范围。我做错了吗?

4

3 回答 3

1

它应该是:

if (text.Length - 1 < position || position < 0 || text[position] == ' ')

并更换

 while (end < text.Length - 1 )   
    end++;

 end = text.Length - start;
于 2012-10-01T02:40:42.297 回答
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)
于 2012-10-01T02:42:47.393 回答
1

方法的第二个参数Substring()不是索引,而是长度。

于 2012-10-01T02:45:55.790 回答