C# 프로그래밍을 하다 보면 입력받은 문자열이 실제로 숫자로만 구성되어 있는지 확인해야 하는 경우가 자주 발생합니다. 예를 들어 사용자 입력 검증이나 데이터 파싱 작업에서 필수적인 처리 과정입니다.
기본 개념
먼저 확인하고자 하는 문자열이 다음과 같이 있다고 가정해 보겠습니다.
string str = "3456";
LINQ의 All() 메서드 활용하기
문자열이 숫자인지 여부를 판별하는 가장 간결한 방법은 LINQ의 All() 메서드와 char.IsDigit() 메서드를 조합하는 것입니다.
str.All(c => char.IsDigit(c))
위 코드는 문자열의 모든 문자가 숫자일 경우 true를 반환하고, 하나라도 숫자가 아닌 문자가 포함되어 있으면 false를 반환합니다.
- All(c => char.IsDigit(c)): 문자열의 모든 문자(c)에 대해 char.IsDigit 검사를 수행하며, 모두 통과해야 true를 반환합니다.
전체 예제 코드
다음은 위 로직을 활용한 완전한 실행 코드입니다.
using System;
using System.Linq;
namespace Demo {
public class MyApplication {
public static void Main(string[] args) {
string str = "3456";
// 문자열이 숫자인지 여부 확인
Console.WriteLine(str.All(c => char.IsDigit(c)));
}
}
}실행 결과
문자열 "3456"은 모든 문자가 숫자이므로 다음과 같은 결과가 출력됩니다.
True
추가 팁: TryParse를 활용한 대안 방법
단순히 숫자 여부만 확인하는 것이 아니라, 해당 문자열을 실제 정수로 변환해야 하는 경우라면 int.TryParse() 메서드를 사용하는 것이 더 효율적입니다.
if (int.TryParse(str, out int result)) {
Console.WriteLine($"숫자입니다: {result}");
} else {
Console.WriteLine("숫자가 아닙니다.");
}다만 이 방법은 음수 기호(-)나 소수점 등도 처리할 수 있어, '순수하게 0~9의 숫자만 포함'되어야 하는 조건이라면 앞서 소개한 All(c => char.IsDigit(c)) 방식이 더 적합합니다.
정리
C#에서 문자열이 숫자인지 확인하는 방법을 정리하면 다음과 같습니다.
- All + char.IsDigit: 모든 문자가 숫자(0~9)인지 엄격하게 검사할 때 적합
- int.TryParse: 변환 가능 여부까지 함께 확인하고 싶을 때 유용
상황에 맞는 방법을 선택하여 안전하고 신뢰성 있는 문자열 검증 로직을 구현해 보시기 바랍니다.