입력 문자열이 있고 다음이 포함되어 있는지 확인하고 싶습니다.
- 글자 만
- 문자와 숫자 만
- 문자, 숫자 또는 밑줄 만
명확히하기 위해 코드에 3 가지 사례가 있으며 각각 다른 검증을 요구합니다. C #에서 이것을 달성하는 가장 간단한 방법은 무엇입니까?
답변
글자 만 :
Regex.IsMatch(input, @"^[a-zA-Z]+$");
문자와 숫자 만 :
Regex.IsMatch(input, @"^[a-zA-Z0-9]+$");
문자, 숫자 및 밑줄 만 :
Regex.IsMatch(input, @"^[a-zA-Z0-9_]+$");
답변
bool result = input.All(Char.IsLetter);
bool result = input.All(Char.IsLetterOrDigit);
bool result = input.All(c=>Char.IsLetterOrDigit(c) || c=='_');
답변
문자 만 :
Regex.IsMatch(theString, @"^[\p{L}]+$");
문자와 숫자 :
Regex.IsMatch(theString, @"^[\p{L}\p{N}]+$");
문자, 숫자 및 밑줄 :
Regex.IsMatch(theString, @"^[\w]+$");
이러한 패턴은 국제 문자와도 일치합니다 ( a-z
구문 사용과 반대 ).
답변
Regex를 사용하지 않고 .NET 2.0 프레임 워크 (일명 LINQ)를 사용하는 사람들을 위해 :
편지 만 :
public static bool IsAllLetters(string s)
{
foreach (char c in s)
{
if (!Char.IsLetter(c))
return false;
}
return true;
}
숫자 만 :
public static bool IsAllDigits(string s)
{
foreach (char c in s)
{
if (!Char.IsDigit(c))
return false;
}
return true;
}
숫자 또는 문자 만 :
public static bool IsAllLettersOrDigits(string s)
{
foreach (char c in s)
{
if (!Char.IsLetterOrDigit(c))
return false;
}
return true;
}
숫자 나 문자 또는 밑줄 만 :
public static bool IsAllLettersOrDigitsOrUnderscores(string s)
{
foreach (char c in s)
{
if (!Char.IsLetterOrDigit(c) && c != '_')
return false;
}
return true;
}
답변
정규 표현식을 사용하는 것이 좋습니다.
public bool IsAlpha(string input)
{
return Regex.IsMatch(input, "^[a-zA-Z]+$");
}
public bool IsAlphaNumeric(string input)
{
return Regex.IsMatch(input, "^[a-zA-Z0-9]+$");
}
public bool IsAlphaNumericWithUnderscore(string input)
{
return Regex.IsMatch(input, "^[a-zA-Z0-9_]+$");
}
답변
문자열의 문자를 반복하고 Char 메서드 IsLetter를 사용하여
확인할 수 있지만 String 메서드 IndexOfAny 를 사용하여 문자열 에없는 다른 문자를 검색 하는 트릭을 수행 할 수도 있습니다.
답변
문자열 문자를 반복하고 ‘IsLetter’및 ‘IsDigit’이라는 ‘Char’기능을 사용하십시오.
더 구체적인 것이 필요하면 Regex 클래스를 사용하십시오.