C#에서 문자열 안에 포함된 숫자를 추출하려면 정규식(Regular Expression)을 활용하는 것이 가장 효과적입니다. 복잡한 반복문 없이도 간단한 패턴 하나로 원하는 숫자를 손쉽게 찾아낼 수 있습니다.
1. 정규식 패턴 설정하기
먼저 Regex 클래스를 사용하여 숫자를 찾기 위한 패턴을 지정합니다. 아래 패턴에서 \d+는 '하나 이상의 연속된 숫자'를 의미합니다.
Regex r = new Regex(@"\d+");
문자열 앞에 붙은 @ 기호는 축자적 문자열 리터럴을 나타내며, 역슬래시(\)를 이스케이프 처리하지 않고 그대로 사용할 수 있게 해줍니다.
2. Match 클래스로 문자열 검색하기
다음으로 Match 클래스를 사용해 대상 문자열에서 패턴과 일치하는 첫 번째 부분을 찾습니다.
Match m = r.Match("Welcome! We are open 365 days in a year!");검색이 성공했는지 여부는 Match 객체의 Success 속성으로 확인할 수 있습니다. 매칭에 성공했다면 Value 속성을 통해 찾아낸 숫자를 가져올 수 있습니다.
전체 예제 코드
아래는 문자열에서 숫자를 찾아 출력하는 완전한 C# 프로그램입니다.
using System;
using System.Text.RegularExpressions;
class Demo {
static void Main() {
Regex r = new Regex(@"\d+");
Match m = r.Match("Welcome! We are open 365 days in a year!");
if (m.Success) {
Console.Write("Number: ");
Console.WriteLine(m.Value);
}
}
}
실행 결과
Number: 365
참고: 여러 개의 숫자를 모두 추출하려면?
문자열에 숫자가 여러 개 있고 이를 전부 찾고 싶다면 Matches 메서드를 사용하면 됩니다. 일치하는 모든 결과를 컬렉션 형태로 반환하므로 foreach 문으로 순회하며 출력할 수 있습니다.
foreach (Match num in r.Matches("2024년 12월 25일")) {
Console.WriteLine(num.Value); // 2024, 12, 25 순서로 출력
}이처럼 정규식을 활용하면 문자열 파싱 작업을 훨씬 간결하고 안정적으로 처리할 수 있습니다.