2010-01-09 3 views
3

누구나 나를 도와 줄 수 있다면 ...문자열에있는 특정 문자가 발생한 후 공백이 있는지 확인하십시오.

텍스트라는 문자열이 있습니다. 나는 특정 문자의 모든 발생 후 "공백이 있는지 확인해야합니다. 공백이없는 경우, 나는이 하나를 삽입해야합니다.

나는 C#에서이 작업을 수행하는 가장 좋은 방법에 확실하지 않다, 나는 정규 표현식이 갈 수있는 방법이 될 수 있다고 생각하지만, 사람이 그것을 감사하겠습니다 도움이 될 수 있다면 나는 ...

을이 작업을 수행하는 정규 표현식에 대한 충분한 지식을 가지고 있지 않습니다.

답변

8
// rule: all 'a's must be followed by space. 
// 'a's that are already followed by space must 
// remain the same. 
String text = "banana is a fruit"; 
text = Regex.Replace(text, @"a(?!\s)", x=>x + " "); 
// at this point, text contains: ba na na is a fruit 

정규식 a (?! \ s)는 공백이 오지 않는 'a'를 찾습니다. 람다 식 X => X + ""지금 내가 한 'A'공백

+0

고마워요, 그게 내가 찾고 있던 ... –

1

을 그래서, 당신은 가정 당신의 문자열 :

string text = "12345,123523, 512,5,23, 18"; 

어설 션 여기에 공백이없는 각 쉼표 뒤에 공백을 넣으 려구요. 당신이 좋아하는대로 적응. 당신은 정규 표현식을 사용할 수 있습니다

교체 :

Regex.Replace(text, ",(?!\s)", ", "); 

이 정규 표현식은 그냥 되지 않은 공백 (공백, 탭 등) 다음과 동일하여 대체 쉼표를 검색 쉼표 및 단일 공간.

우리는 여전히, 조금 더 잘 할 수 있습니다

그대로 쉼표를 떠나 오직 쉼표와 하나의 공간에 의하여 다음과 공백이 아닌 문자 사이의 빈 공간을 대체
Regex.Replace(text, "(?<=,)(?!\s)", " "); 

. 기본적으로 은 필요하다면 새 공간을 삽입합니다.

+0

다양한 제안 ... 위로를위한 'A'없이 다음 공백의 선두로부터를 대체 할 대체 기능을 알려줍니다 regex, 내 질문에 대한 분명한 요구 사항입니다 안돼 기호를 이해하지 ... 당신의 도움을 주셔서 감사합니다. –

+0

not 기호는? 뒤에 대문자가 오지 않는 경우에만 일치하는 "negative lookahead"연산자의 일부입니다. –

관련 문제