2011-02-22 2 views
2

Regex에 끔찍한 점이 있습니다. C#에서 정규 표현식을 사용하여 두 개 이상의 공백을 줄 바꿈하지 않는 공백으로 변환하고 싶습니다. 나는 하나의 공간 만 남기고 싶다. 두 개 이상의 공백을 C#의 Regex로 바꾸십시오.

Sample  Sample 

Sample Sample 

Sample     Sample 

그러나

은 영향을받지 않습니다 생산겠습니까.

아이디어가 있으십니까?

미리 감사드립니다.

답변

7

당신은 대체 인수로 MatchEvaluator를 사용할 수 있습니다. C# 3.0 이상에서는 람다 함수를 사용할 수 있습니다

s = Regex.Replace(s, " {2,}", x => x.Value.Replace(" ", " ")); 
+0

감사합니다 :-) 내가 사용 MatchEvaluator 기능을 잊어 버렸습니다. 나는 그것이 간단 할 것이라고 생각했다. 나는 그걸로 힘든 시간을 보낸다. – Chev

+0

아주 좋은 하나! – Marlon

3

제로 폭의 긍정적 인 선견문 및 표정 어설 션을 기반으로합니다.

MSDN

var rx = new Regex(" (?=)|(?<=) "); 

var str = "ab cde f"; 
var res = rx.Replace(str, "&nbsp;"); 

// res == ab&nbsp;&nbsp;&nbsp;cde f 
+0

@ 마크가 대신 내가 "간단한"방법으로 싶었을하지만 – xanatos

관련 문제