C#에서 카멜 케이스(CamelCase)로 작성된 문자열의 대문자 앞에 공백을 삽입해 가독성을 높이고 싶은 경우가 있습니다. 예를 들어 "WelcomeToMyWebsite"를 "Welcome To My Website"처럼 변환하는 것이죠. 이번 글에서는 LINQ를 활용해 이를 간단하게 구현하는 방법을 알아보겠습니다.
문자열 설정
먼저 공백을 삽입할 문자열을 준비합니다.
var str = "WelcomeToMyWebsite";
위 문자열을 보면 대문자 앞에 공백이 없습니다. LINQ의 Select 메서드를 사용하면 각 문자를 하나씩 검사하면서 대문자인 경우에만 앞에 공백을 추가할 수 있습니다.
LINQ로 공백 삽입하기
str = string.Concat(str.Select(x => Char.IsUpper(x) ? " " + x : x.ToString())).TrimStart(' ');이 코드의 동작 원리는 다음과 같습니다.
- Select 메서드가 문자열의 각 문자를 순서대로 순회합니다.
- Char.IsUpper(x)로 해당 문자가 대문자인지 확인합니다.
- 대문자라면 공백과 함께 문자를 반환하고, 그렇지 않으면 문자를 그대로 반환합니다.
- string.Concat으로 모든 문자를 하나의 문자열로 합칩니다.
- TrimStart(' ')로 첫 번째 대문자 앞에 생긴 불필요한 공백을 제거합니다.
전체 예제 코드
다음은 대문자로 시작하는 단어 사이에 공백을 삽입하는 전체 코드입니다.
using System;
using System.Linq;
class Demo {
static void Main() {
var str = "WelcomeToMyWebsite";
Console.WriteLine("Original String: "+str);
str = string.Concat(str.Select(x => Char.IsUpper(x) ? " " + x : x.ToString())).TrimStart(' ');
Console.WriteLine("New String: "+str);
Console.ReadLine();
}
}실행 결과
Original String: WelcomeToMyWebsite New String: Welcome To My Website
이처럼 LINQ의 Select와 string.Concat, TrimStart를 조합하면 별도의 반복문 없이 한 줄의 코드로 카멜 케이스 문자열에 공백을 손쉽게 삽입할 수 있습니다. 코드가 짧아 가독성이 좋고, 유지보수 측면에서도 유리합니다.