C#substring超出范围

时间:2016-02-08 23:55:43

标签: c# substring

我遇到的问题是我需要能够循环一个字符串,在索引的位置后返回5个字符,然后在5个字符之后。

但是当剩下少于5个字符时会发生超出范围的错误,我认为它只会打印字符串的剩余字符。

string string1 = "ghuitghtruighr";
for (int index = 0; index < string1.Length; index += 5)
{
    string subString = string1.Substring(i, 5);
    Console.WriteLine(subString);
}

当剩下的数量少于5时,如何让它打印出字符串的左边?

3 个答案:

答案 0 :(得分:3)

您可以从索引到字符串末尾string string1 = "ghuitghtruighr"; for (int index = 0; index < string1.Length; index += 5) { string subString = string1.Substring(index); if(subString.Length > 5) subString = subString.Substring(0, 5); Console.WriteLine(subString); } ,然后检查生成的子字符串是否包含超过5个字符:

string
如果你有很多不同长度的字符串,那么就不要做上面的事情 - Substring() s是不可变的,所以每次迭代调用~两次会导致每次堆上有一个额外的字符串 - 而不是http://codepen.io/prowseed/pen/rxQwbQ

答案 1 :(得分:3)

用以下代码替换OP代码的第3行:

string subString = string1.Substring(i, string1.Length - i < 5 ? string1.Length - i : 5);

答案 2 :(得分:3)

您可以使用LINQ .Skip(...)&amp; .Take(...)运营商喜欢这样:

for (int index = 0; index < string1.Length; index += 5)
{
    string subString = new String(string1.Skip(index).Take(5).ToArray());
    Console.WriteLine(subString);
}

这给出了:

ghuit
ghtru
ighr