[C#] N개의 공백을 하나의 공백으로 치환하기

2013. 12. 27. 08:54Others/C# 일반

불필요한 공백문자를 제거하기 위해서 자주 사용하는 방법은 Trim()을 사용하는 것입니다. 하지만 Trim()은 문자열 시작과 끝부분의 공백을 제거할 뿐입니다. 하지만 문자열 사이의 불필요한 공백은 어떻게 제거할 수 있을까요?

쉽게 생각할 수 있는 방법은 Replace()를 이용한 방법이 있지만, 아쉽게도 그 방법은 정상동작 하지 않습니다.

string name = " 제임스     스미스  ";
Console.WriteLine("결과:[" + name.Replace("  ", " ") + "]");

결과는 ‘결과:[제임스    스미스 ]’ 로 나타납니다. Replace()는 이어지는 공백 중 첫 공백만 치환하기 때문에 위와 같이 기대와 다르게 결과가 나타납니다.

 

해결책은 간단히 Split(), Join()를 활용하는 것입니다.

string[] splitedName = "  제임스     스미스  "
   .Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
string result = string.Join(" ", splitedName);
Console.WriteLine("결과:[" + result + "]");