检查列表中的下一个字符串

时间:2011-09-23 04:52:58

标签: c#

试图弄清楚如何检查下一个字符串与循环中的当前字符串(伪代码):

string currentName = string.Empty;

for(int i=0; i < SomeList.Count; i++)
{
    currentName = SomeList[i].Name;

    //do some other logic here

    if(string.Compare(SomeList[i].Name, SomeList[i+1].Name) == 0)
         // do something
}

这似乎不起作用:

if(string.Compare(SomeList[i].Name, SomeList[i+1].Name)

我想查看当前字符串是否与循环中的下一个字符串相同,然后才能进入循环中的下一个迭代。

3 个答案:

答案 0 :(得分:3)

你很亲密。当你到达最后一个元素时,你会得到一个IndexOutOfRangeException,因为你试图检查以下元素(固有地,没有)。

只需更改

for(int i=0; i < SomeList.Count(); i++)

for(int i=0; i < SomeList.Count() - 1; i++)

答案 1 :(得分:0)

它可能会抛出IndexOutOfRangeException,不是吗?你必须在高端观察你的边界情况:

if (i != SomeList.Count - 1 && 
    string.Compare(SomeList[i].Name, SomeList[i+1].Name) == 0) 
{
    // Do something
}

答案 2 :(得分:0)

我建议你将索引计数器从1开始,并与SomeList [i-1],SomeList [i]进行比较,这样就不会得到IndexOutOfRangeException

此外,这是区分大小写的匹配,调用ToUpper()方法以确保不区分大小写匹配。