Является ли более распространенным / стандартным сравнение прописных или строчных букв?
Я нахожусь в моих первых шести месяцах программирования на работе, и я все еще чувствую стандарты и лучшие практики.
При сравнении строк или символов чаще используется ToUpper для сравнения прописных букв или ToLower для строчных? Вероятно, я чаще видел заглавные буквы, но я искал более точный ответ и, возможно, длинное объяснение оптимизации (более низкий код ASCII, что угодно).
В стороне: В моей текущей задаче я использую строку #replace, и моя новая строка будет читаться строчными буквами для удобства чтения, но означает ли это, что я обязательно должен использовать ToLower как для моей исходной строки, так и для подстроки, которую я ищу?
4 ответа
Если есть способ сделать сравнение без учета регистра без изменения регистра, вы должны использовать его вместо этого. Если нет, то в большинстве случаев лучше перевести в верхний регистр. Например, немецкий sharp-s ß преобразуется в двойной S в верхнем регистре и правильно сравнивается с SS. Если вы конвертируете в нижний регистр, это не получится, поскольку в нижнем регистре SS - это ss, а не ß.
Зависит от того, какой язык программирования вы используете, в C# есть встроенное сравнение без учета регистра:
string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase);
Вероятно, это что-то особенное для вашей конкретной команды разработчиков. Это должно быть эффективно эквивалентно в любом случае, так как все нижние -> верхние преобразования должны содержать обратную верхнюю -> нижнюю.
Однако, вероятно, хорошей идеей будет быть последовательным в рамках проекта на тот случай, если вы получите странного расширенного персонажа, в котором нет взаимных отношений.
В некоторых ситуациях вы должны использовать: InvariantCultureIgnoreCase
string.Equals(a, b, StringComparison.InvariantCultureIgnoreCase);
Ну, это моя интерпретация статьи Скотта Хансельмана. Обновление турецкой ошибки в dasBlog и напоминание мне о глобализации