문자열에서 각 단어의 첫 글자만 추출해야 하는 경우가 종종 있습니다. C#에서는 정규식(Regular Expression)을 활용하면 이 작업을 아주 간단하게 처리할 수 있습니다. 이번 글에서는 정규식을 이용해 문장 내 모든 단어의 첫 글자를 추출하는 방법을 예제 코드와 함께 살펴보겠습니다.
문자열 준비
먼저 다음과 같은 문자열이 있다고 가정해 보겠습니다.
string str = "The Shape of Water got an Oscar Award!";
사용할 정규식
각 단어의 첫 글자를 출력하려면 아래 정규식을 사용합니다.
@"\b[a-zA-Z]"
여기서 \b는 단어 경계(word boundary)를 의미하며, [a-zA-Z]는 알파벳 한 글자를 나타냅니다. 즉, 이 패턴은 각 단어의 시작 위치에 있는 알파벳 한 글자와 일치하므로, 문장 전체에서 단어별 첫 글자만 골라낼 수 있습니다.
전체 코드
using System;
using System.Text.RegularExpressions;
namespace RegExApplication {
public class Program {
private static void showMatch(string text, string expr) {
Console.WriteLine("The Expression: " + expr);
MatchCollection mc = Regex.Matches(text, expr);
foreach (Match m in mc) {
Console.WriteLine(m);
}
}
public static void Main(string[] args) {
string str = "The Shape of Water got an Oscar Award!";
Console.WriteLine("Display first letter of each word!");
showMatch(str, @"\b[a-zA-Z]");
}
}
}실행 결과
Display first letter of each word! The Expression: \b[a-zA-Z] T S o W g a O A
실행 결과를 보면 "The Shape of Water got an Oscar Award!" 문장에서 각 단어의 첫 글자인 T, S, o, W, g, a, O, A가 순서대로 출력된 것을 확인할 수 있습니다. Regex.Matches 메서드는 입력 문자열에서 정규식과 일치하는 모든 부분을 MatchCollection 형태로 반환하므로, 이를 반복문으로 순회하면서 일치 항목을 하나씩 출력하는 방식으로 동작합니다.