C#에서 문자열이 유효한 키워드인지 확인하는 방법
문자열이 C#에서 유효한 키워드인지 확인하려면 IsValidIdentifier 메서드를 사용하면 됩니다.
IsValidIdentifier 메서드는 입력된 값이 식별자(identifier)인지 여부를 검사합니다. 만약 해당 값이 식별자가 아니라면, 그 값은 C#의 예약어(키워드)라는 의미입니다.
예제에서는 CodeDomProvider를 생성한 뒤 IsValidIdentifier 메서드와 함께 사용합니다.
CodeDomProvider provider = CodeDomProvider.CreateProvider("C#");CodeDomProvider.CreateProvider 메서드에 "C#"을 전달하면 C# 언어 규칙에 따라 식별자 유효성을 검사해 주는 공급자 인스턴스가 반환됩니다. 이 인스턴스의 IsValidIdentifier 메서드를 호출하면 해당 문자열이 변수명 등으로 사용할 수 있는 식별자인지, 아니면 언어 차원에서 예약된 키워드인지 판별할 수 있습니다.
전체 예제 코드
using System;
using System.IO;
using System.CodeDom.Compiler;
namespace Program {
class Demo {
static void Main(string[] args) {
string str1 = "amit";
string str2 = "for";
CodeDomProvider provider = CodeDomProvider.CreateProvider("C#");
// str1 검사
if (provider.IsValidIdentifier(str1)) {
Console.WriteLine("{0}은(는) 식별자입니다", str1);
} else {
Console.WriteLine("{0}은(는) C#의 유효한 키워드입니다", str1);
}
// str2 검사
if (provider.IsValidIdentifier(str2)) {
Console.WriteLine("{0}은(는) 식별자입니다", str2);
} else {
Console.Write("{0}은(는) C#의 유효한 키워드입니다", str2);
}
}
}
}실행 결과
amit은(는) 식별자입니다 for은(는) C#의 유효한 키워드입니다
위 예제에서 "amit"는 일반적인 변수 이름으로 사용할 수 있으므로 식별자로 판별되고, "for"는 반복문에서 사용되는 C#의 예약어이므로 키워드로 판별됩니다. 이처럼 IsValidIdentifier 메서드를 활용하면 사용자 입력값이나 동적으로 생성되는 이름이 C# 문법상 안전하게 사용할 수 있는 식별자인지 손쉽게 검증할 수 있습니다.