2011-03-03 4 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"를 찾으려면