Gần đây, tôi đã thực hiện các cải tiến hiệu suất cho một chức năng kiểm tra các chữ cái trong một chuỗi với sự trợ giúp của trang này.
Tôi đã tìm ra rằng các Giải pháp với regex chậm hơn 30 lần so với các giải pháp với kiểm tra Char.IsLetterOrDigit.
Chúng tôi không chắc chắn rằng những Chữ cái hoặc Chữ số đó bao gồm và chúng tôi chỉ cần các ký tự Latinh nên đã triển khai chức năng của chúng tôi dựa trên phiên bản dịch ngược của hàm Char.IsLetterOrDigit.
Đây là giải pháp của chúng tôi:
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;
}
}
Và cách sử dụng là như thế này:
if( logicalId.All(c => CheckAllowedChars(c)))
{ // Do your stuff here.. }