C#에서 특정 유니코드 문자가 문자(letter)인지 십진수(digit)인지 확인하려면 Char.IsLetterOrDigit() 메서드를 사용하면 됩니다. 이 메서드는 지정된 문자가 알파벳 문자이거나 십진수 숫자에 해당하면 true를, 그 외의 경우에는 false를 반환합니다.
Char.IsLetterOrDigit() 메서드란?
Char.IsLetterOrDigit()은 System 네임스페이스의 Char 구조체에서 제공하는 정적 메서드로, 하나의 char 값을 매개변수로 받아 해당 문자가 유니코드 범주상 문자(UppercaseLetter, LowercaseLetter 등) 또는 십진수(DecimalDigitNumber)에 속하는지 검사합니다. 특수 기호나 공백 문자는 모두 false로 판별됩니다.
예제 1: 숫자 문자 확인
다음 예제에서는 문자 '1'이 문자 또는 숫자에 해당하는지 확인합니다.
using System;
public class Demo {
public static void Main() {
bool res;
char val = '1';
Console.WriteLine("Value = " + val);
res = Char.IsLetterOrDigit(val);
Console.WriteLine("Is the value a letter or digit? = " + res);
}
}위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Value = 1 Is the value a letter or digit? = True
'1'은 십진수에 해당하는 문자이므로 true가 반환됩니다.
예제 2: 특수문자 확인
이번에는 특수 기호 '$'를 대상으로 동일한 검사를 수행해 보겠습니다.
using System;
public class Demo {
public static void Main() {
bool res;
char val = '$';
Console.WriteLine("Value = " + val);
res = Char.IsLetterOrDigit(val);
Console.WriteLine("Is the value a letter or digit? = " + res);
}
}실행 결과는 다음과 같습니다.
Value = $ Is the value a letter or digit? = False
'$'는 문자도 숫자도 아니기 때문에 false가 반환됩니다.
참고: 오버로드된 메서드 활용
Char.IsLetterOrDigit()은 문자열과 인덱스를 함께 받는 오버로드도 제공합니다. 이를 사용하면 문자열 내에서 특정 위치의 문자가 문자 또는 숫자인지 간편하게 확인할 수 있습니다.
string str = "abc123"; bool result = Char.IsLetterOrDigit(str, 3); // str[3]은 '1' // result = true
이처럼 Char.IsLetterOrDigit() 메서드를 활용하면 입력값 유효성 검사나 문자열 필터링 작업에서 문자와 숫자를 손쉽게 구분할 수 있습니다.