Ответ 1
Да, [A-Za-z] будет намного быстрее, чем установка RegexOptions.IgnoreCase
, в основном из-за строк Unicode. Но это также намного более ограничивает - [A-Za-z] не соответствует акцентированным международным символам, это буквально набор A-Za-z ASCII и ничего более.
Я не знаю, видел ли Тим Брей ответ на мое сообщение, но он хороший:
Один из самых сложных вопросов в интернационализированном поиске - это верхний и нижний регистр. Это понятие случая ограничено языками, написанными на латинском, греческом и кириллическом наборах символов. Конечно, англоязычные пользователи ожидают, что поиск будет нечувствительным к регистру, хотя бы потому, что они ленивы: если Надя Джонс хочет выглядеть на оболочке Google, вероятно, просто введите nadia jones и ожидайте, что система позаботится об этом.
Таким образом, довольно часто для поисковых систем "нормализовать" слова, преобразовывая их все в нижний или верхний регистр, как для индексирования, так и для запросов.
Проблема в том, что сопоставление между случаями не всегда так же просто, как и на английском. Например, немецкий нижний регистр "ß" становится "SS", когда верхний, а старый добрый капитал "I", когда опущенный на турецком языке становится бесчисленным "ı" (да, у них есть "i", его версия верхнего регистра - "İ" ). Я прочитал (но не подтвердил из первых рук), что правила для воссоздания акцентированных символов, таких как "é", различны во Франции и Квебеке. Одним из результатов всего этого является то, что программное обеспечение, такое как java.String.toLowerCase(), имеет тенденцию работать удивительно медленно, поскольку оно пытается обойти все эти угловые регистры.
http://www.tbray.org/ongoing/When/200x/2003/10/11/SearchI18n