2011-03-03 17 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:配列は実際にはコレクションではなく、ちょうどあなたがそれらを1つのように扱うように定義された拡張メソッドのセットを持っています。この場合、おそらく配列を使うことで十分でしょうが、多くの現実の状況では、代わりに動的に展開する '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

これはそれを行うだろう:私は区切り文字を追加

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

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

注:

if(names.Contains(person)) 
0

これを実行しています元の文字列の始めと終わり。また、区切り文字をfindPerson変数の先頭と末尾に追加します。これにより、部分的に一致することはありません。たとえば、 "christoph"の "chris"を見つけると

関連する問題