2011-03-03 41 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」