2012-08-06 3 views
1

C#으로 문자열에서 쉼표를 제거 할 수있는 방법은 무엇입니까? 내가 함께 시도가C에서 ""사이의 쉼표 제거 #

:하지만이 작동하지 않습니다

string result = Regex.Replace(input, 
@",([^""]$)",String.Empty); 

...

감사

+0

: , 그 겪고 그들을 위해 아무것도 쉼표를 교체 한 다음 하나의 문자열로 모든 것을 재결합, 트릭을 할해야 빈 문자열, 그래서 ...? –

+2

"각"사이의 의미는 무엇입니까? "문자열 리터럴을 의미합니까? –

+0

예를 들어 aaaaaa, bbbbb, cccc,"bbbb, aaaa ", aaa,"vv, x "는 와우 : aaaaaa, bbbbb, cccc, "bbbb aaaa", aaa, "vv x" – Maxime

답변

1

나는 당신의 입력 문자열의 모습에 약간 혼란스러워하지만, 오래 해요 당신이 시도 할 수있는 쉼표의 간단한 교체를하려고하는 것처럼

var result = input.replace(",",""); 
+2

어떻게 그 대답입니까? 인용문 사이의 쉼표 만 제거하려는 질문에 대한 의견. – SimpleVar

+0

나는 @YoryeNathan에 동의한다. 이것이 나의 질문을 오해하여 내 대답을 삭제 한 이유이다. – Gabriel

+0

분명히 그렇게 나도 그렇다. (사과한다.) –

5

나의 생각은 "qu otes "이므로 각 고르지 않은 색인 요소는 따옴표 사이에 표시됩니다. 기본적으로 당신의 정규식은 "`를 제외한 문자 다음에 쉼표`로 대체

var parts = input.Split('"'); 

for (var i = 1; i < parts.Length; i += 2) 
{ 
    parts[i] = parts[i].Replace(",", ""); 
} 

var result = string.Join("\"", parts); 
+0

좋은 트릭이 실제로 –

+1

+1입니다.이 접근법은 이스케이프 된 CSV에서 작동해야합니다. – StriplingWarrior

+0

@StriplingWarrior 아주 좋았어요! 저는 빈 ""의 경우에 대해 실제로 생각하고 있었지만, 생각하지 않았습니다. ("this"는 "테스트"입니다.) CSV 형식의 이스케이프 된 따옴표로 얼마나 효과가 있는지 알려주 셨습니다. – SimpleVar

0
// extract the fields 
    Regex CSVParser = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))"); 
    String[] Fields = CSVParser.Split(Test); 


    // clean up the fields (remove " and leading spaces) 
    for (int i = 0; i < Fields.Length; i++) 
    { 
     Fields[i] = Fields[i].TrimStart(' ', '"'); 
     Fields[i] = Fields[i].TrimEnd('"'); 
    }