답변:
글자 만 :
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
대해 컴파일 된 것보다 1.8 배 빠르며 옵션 (!)이있는 Regex
모든 문자에 대해 컴파일 된 것보다 3 배 빠릅니다 IgnoreCase
.
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 를 사용하여 문자열 에없는 다른 문자를 검색 하는 트릭을 수행 할 수도 있습니다.
당신이 초보자라면 내 코드에서 참조 할 수 있습니다 .. 내가 한 것은 알파벳과 공백 만 얻을 수 있도록 체크를하는 것입니다! 두 번째 if 문 다음에 for 루프를 반복하여 문자열의 유효성을 다시 검사 할 수 있습니다
bool check = false;
Console.WriteLine("Please Enter the Name");
name=Console.ReadLine();
for (int i = 0; i < name.Length; i++)
{
if (name[i]>='a' && name[i]<='z' || name[i]==' ')
{
check = true;
}
else
{
check = false;
break;
}
}
if (check==false)
{
Console.WriteLine("Enter Valid Value");
name = Console.ReadLine();
}
최근 에이 페이지의 도움으로 문자열의 문자를 확인하는 기능의 성능이 향상되었습니다.
정규식이있는 솔루션이 Char.IsLetterOrDigit 검사가있는 솔루션보다 30 배 느리다는 것을 알았습니다.
문자 나 숫자가 포함되어 있는지 확신 할 수 없었고 라틴 문자 만 필요했기 때문에 디 컴파일 된 Char.IsLetterOrDigit 함수 버전을 기반으로 함수를 구현했습니다.
우리의 해결책은 다음과 같습니다.
internal static bool CheckAllowedChars(char uc)
{
switch (uc)
{
case '-':
case '.':
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z':
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
return true;
default:
return false;
}
}
사용법은 다음과 같습니다.
if( logicalId.All(c => CheckAllowedChars(c)))
{ // Do your stuff here.. }
문자가 문자, 숫자 또는 공백인지 확인하는 방법을 찾으십시오. 그렇지 않으면 밑줄을 첨부하십시오 (필요에 따라 자유롭게 수정하십시오)
public String CleanStringToLettersNumbers(String data)
{
var result = String.Empty;
foreach (var item in data)
{
var c = '_';
if ((int)item >= 97 && (int)item <= 122 ||
(int)item >= 65 && (int)item <= 90 ||
(int)item >= 48 && (int)item <= 57 ||
(int)item == 32)
{
c = item;
}
result = result + c;
}
return result;
}