2011-09-23 47 views
0

试图找出如何检查下一个字符串与当前字符串在一个循环(伪代码):检查下一个字符串

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) 

我想看看当前字符串是否与循环中下一个迭代之前循环中的下一个字符串相同。

+2

1)SomeList [i] .Name == SomeList [i + 1] .Name'有什么问题? 2)如何处理最后一个元素? – NullUserException

+0

它不起作用? – BoltClock

+0

它应该在列表中工作。更好的方法是使用先前的值和第一个元素的单独大小来检查当前值,以便在重复名称到达时执行逻辑。 –

回答

3

你就近了。当你到达最后一个元素时,你会得到一个IndexOutOfRangeException,因为你正在试图检查下面的元素(固有的,没有)。

只要改变

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

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

i = SomeList.Count(); i> = 0; i-- – Independent

+0

是的,但是这样做你永远不会到达最后一个元素(例如:'//在这里做一些其他逻辑部分) – NullUserException

0

它可能抛出IndexOutOfRangeException,不是吗?你必须在上端看你的边界情况:

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

我建议你碰到的索引计数器从1开始,并做比较SomeList [I-1],SomeList [I]这样你没有得到IndexOutOfRangeException

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

+0

或者你可以使用'String.Compare(x,y,true) '; – NullUserException

相关问题