문자열에 특수 문자가 포함되어 있는지 확인하려면 Char.IsLetterOrDigit 메서드를 활용하면 됩니다. 이 메서드는 전달된 문자가 알파벳 문자나 숫자에 해당하면 true를 반환하고, 그 외의 특수 문자라면 false를 반환합니다.
for 루프 안에서 이 메서드를 호출하며 문자열의 각 문자를 하나씩 검사하면, 해당 문자열에 특수 문자가 포함되어 있는지 손쉽게 판별할 수 있습니다.
예제 문자열 준비하기
다음과 같은 문자열이 있다고 가정해 보겠습니다.
string str = "Amit$#%";
먼저 ToCharArray() 메서드를 사용해 이 문자열을 문자 배열로 변환합니다.
str.ToCharArray();
그다음 for 루프를 순회하면서 각 문자를 IsLetterOrDigit() 메서드로 검사하고, 알파벳이나 숫자가 아닌 문자(즉, 특수 문자)만 별도의 배열에 저장합니다.
전체 예제 코드
위 과정을 구현한 완전한 C# 코드는 다음과 같습니다.
using System;
namespace Demo {
class myApplication {
static void Main(string[] args) {
string str = "Amit$#%";
char[] one = str.ToCharArray();
char[] two = new char[one.Length];
int c = 0;
for (int i = 0; i < one.Length; i++) {
if (!Char.IsLetterOrDigit(one[i])) {
two[c] = one[i];
c++;
}
}
Array.Resize(ref two, c);
Console.WriteLine("Following are the special characters:");
foreach(var items in two) {
Console.WriteLine(items);
}
Console.ReadLine();
}
}
}
실행 결과
Following are the special characters: $ # %
실행 결과를 보면 원본 문자열 "Amit$#%"에서 알파벳 'A', 'm', 'i', 't'는 제외되고, 특수 문자인 '$', '#', '%'만 추출되어 출력된 것을 확인할 수 있습니다.
참고: 포함 여부만 간단히 확인하기
특수 문자 목록을 추출하는 것이 아니라 단순히 포함 여부만 확인하고 싶다면, 루프 안에서 특수 문자를 발견하는 즉시 true를 반환하거나 bool 변수를 설정하면 됩니다.
bool hasSpecialChar = false;
foreach (char ch in str) {
if (!Char.IsLetterOrDigit(ch)) {
hasSpecialChar = true;
break;
}
}
Console.WriteLine(hasSpecialChar ? "특수 문자가 포함되어 있습니다." : "특수 문자가 없습니다.");
이처럼 Char.IsLetterOrDigit 메서드를 활용하면 별도의 정규식 없이도 문자열 내 특수 문자를 간단하고 효율적으로 검사할 수 있습니다.