Недавно я сделал улучшения производительности для функции, которая проверяет буквы в строке с помощью этой страницы.
Я понял, что решения с регулярным выражением в 30 раз медленнее, чем решения с проверкой Char.IsLetterOrDigit.
Мы не были уверены, что эти буквы или цифры включают в себя, и нам были нужны только латинские символы, поэтому мы реализовали нашу функцию на основе декомпилированной версии функции 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.. }