2013-06-10 3 views
0

구성 파일에서 쉼표로 구분 된 문자열 목록을 읽습니다. 다음 단계를 확인해야합니다.스플릿은 문자열을 분리하고 다른 구분 된 문자열을 무시/제거합니다.

1) check to see if the string has `[`, if it is then remove or ignore... 
2) split `,` `-` //which i am doing below... 

여기까지 내가 할 수있는 것이 있습니다. 사용

mediaString = 
       Cnn 
       msnbc 
+2

당신이 [뉴스]을 제거하는 정규 표현식을 사용할 수 없습니다 그것을해야합니까? 'Regex.Replace (mediaString, @ "[. *]", ""); ' – Despertar

+0

이것에 대한보다 일반적인 규칙은 무엇입니까? 대괄호가있는 하위 문자열을 제거합니까? 또는 어떤 입장이라도? 예를 들어 입력이 "Cnn-News [Channel] 9, msnbc"인 경우 그러면 예상 출력은'Cnn','News 9','msnbc'입니까? 아니면이 경우 대괄호를 무시하고 출력을'Cnn','News [Channel] 9','msnbc'로 남겨 두었습니까? – ThatBlairGuy

+0

내 문자열 배열을 기반으로하는 일반적인 규칙은'cnn, msnbc'이어야합니다. –

답변

2

Linq에 :

string mediaString = "Cnn-[news],msnbc"; 

string[] split = mediaString.Split(new Char[] { ',', '-' }); //gets me the bracket 

내가 원하는 최종 결과는 다음과 같이해야하므로 괄호에있는 문자열을 제거/무시하는

mediaString.Split(new Char[] { ',', '-' }).Where(val => !val.Contains('[') 

당신이 할 수있는 테스트 (val.Contains(...))를 원하는대로 정교하게 만듭니다 (예 : 시작과 끝, 정규 표현식, 특정 값, 모든 enterprisey를 얻으려면 DI 프레임 워크를 통해 제공되는 객체 호출). 당신이 지금하고있는대로 이 문자열을 분할 :

+1

좀 더 정확하도록하려면 : '.Where (val =>! val.StartsWith ("[") &&! val.EndsWith ("]")); ' – PoweredByOrange

+0

기술적으로, @Abu는'[ ':)을 포함하고 있는지를 묻지 만, 정규 표현식을 포함하여 조건 체크에 거의 모든 것을 추가 할 수 있습니다. –

+0

반품이란 무엇입니까? 문자열 []? –

1

사용 정규식은 LINQ 또는 정규 표현식을 사용하지 않고 문자열을

 string str = @"Cnn-[news],msnbc"; 

     Regex regex = new Regex(@"\[.*\]"); 
     string cleanStr = regex.Replace(str, ""); 
     string[] split = cleanStr.Split(new Char[] { ',', '-' }); 
+0

밖으로 나가고 있어요'cnn -'나는 찾고 있지 않습니다 for, pls 내 결과를보고 내 질문을 참조하십시오 –

+1

나는 코드를 실행했고 결과는'Cnn','','msnbc'입니다. 그 이유는'Cnn-, msnbc'와 같은 문자열 모양을 제거한 후입니다. 그래서 그 결과가 유효하다고 생각한다. – Mzf

0

청소를 교체합니다. 문자열 형식의 데이터 구조를 만듭니다 (예 : List). 결과 배열을 통해 실행하고 목록에 추가하지 않으면 각 항목 검사에 지정된 문자를 포함합니다. 결국에는 필요한 결과가있는 목록이 있어야합니다.

이 정규식 솔루션

훨씬 더 우아하지만 당신은 등록의 예를 사용할 수없는 경우이 하나

+0

나는 그 수표를 사용할 수 있다는 것을 알고있다.하지만 나는 그 조건들을 모두 검사하는 더 좋은 방법이 있어야한다고 생각했다. –

+0

그러면 정규 표현식이 최선의 선택이다. – yelman

관련 문제