2011-03-03 43 views
1

有没有更好的方法来实现这一点。C#拆分字符串并在If语句中使用

我有一个字符串,我想在if语句中单独分割和使用。例如:

string people = "John;Joe;Jane;Mike"; 
string[] names = people.Split(';'); 

if(person == "John" || person == "Joe" || person == "Jane" || person == "Mike") 
{ 
    .... 
} 
else 
{ 
    .... 
} 

我猜这样做有更好的方法。

谢谢。

+1

刚发现这个,它可能会起作用。 http://stackoverflow.com/questions/501194/c-is-string-in-array – Batuta

+1

小心......有些人会读优雅,认为不可读... –

+0

是的,使用从该问题接受的答案('string []''IEnumerable .Contains'方法) – Justin

回答

1
string people = "John;Joe;Jane;Mike"; 
List<string> names = new List<string>(people.Split(';')); 

if(names.Contains(person)) 
{ 
    .... 
} 
else 
{ 
    .... 
} 

集合是你的朋友:)

+0

使用一个字符串数组,对于我来说这是一个足够高效的集合。 – contactmatt

+0

@contactmatt:数组实际上并不是集合,它们只是恰好有一组定义的扩展方法,可以让它们像一个对待它们(我在其他人发布答案时学到的一个事实;)。在这种情况下,坚持使用数组可能就足够了,但在许多现实世界中,您需要动态扩展List。 –

2
string people = "John;Joe;Jane;Mike"; 
string[] names = people.Split(';'); 

if(names.Contains(person)) 
{ 
    .... 
} 
else 
{ 
    .... 
} 

Contains<T>IEnumerable<T>一个扩展方法(和数组是IEnumerable<T>),所以你可以使用它的Split结果,以检查它是否包含你正在寻找的字符串。

6
if(names.Contains(person)) { ... } 
1

这将做到这一点:

if(names.Contains(person)) 
0

这样做:

string people = ";John;Joe;Jane;Mike;"; 
string findPerson = "Joe"; 

if (people.contains(String.Format(";{0};", findPerson)) { 
    ... it's found... 
} else { 
    ... it's not found .... 
} 

注意,我说分隔符的原始字符串的开始和结尾。另外,我们将分隔符附加到findPerson变量的开始和结尾处。这确保我们不会击中部分匹配。例如在“christoph”中找到“chris”