"."
обычно не соответствует разрыву строки. Большинство движков регулярных выражений позволяют вам добавить флагов S
(также называемый DOTALL
и SINGLELINE
), чтобы "."
также соответствовал символам новой строки. Если это не удается, вы можете сделать что-то вроде [\S\s]
.
Раздел Remarks статья MSDN должен объяснить вещи. По существу причина для совместимости через настройки различных культур.
Главным, которым Вы должны быть обеспокоены, не является производительность, это - правильность, и от того аспекта метод, который Вы , вероятно хотите использовать для нечувствительного к регистру сравнения, также:
string.Compare(a, b, StringComparison.OrdinalIgnoreCase) == 0;
или
a.Equals(b, StringComparison.OrdinalIgnoreCase)
(Первый полезен, если Вы знаете, строки могут быть пустыми; последний более прост записать, знаете ли Вы уже, что по крайней мере одна строка является непустой. Я никогда не проверял производительность, но предполагаю, что это будет подобно.)
Ordinal
или OrdinalIgnoreCase
безопасная ставка, если Вы не знаете, что хотите использовать другой метод сравнения; получить информацию должно было принять решение , читает эту статью о MSDN.
При сравнении строк Вы должны всегда , используют явного члена StringComparison. Строковые функции несколько непоследовательны в том, как они принимают решение сравнить строки. Единственный способ гарантировать используемое сравнение состоит в том, чтобы a) запомнить всех их (это включает и Вас и всех в Вашей команде), или b) использовать явное сравнение для каждой функции.
намного лучше быть явным и не полагаться на знание группы, являющееся прекрасным. Ваши товарищи по команде поблагодарят Вас за это.
Пример:
if ( StringComparison.OrdinalIgnoreCase.Equals(a,b) )
Используя ToLower для сравнения имеет 2 проблемы, о которых я могу думать первое, что пришло на ум
ToLower () не является функцией сравнения, он помещает строку в нижний регистр. Когда == оператор используется на Строковых объектах в C#, он оптимизирован компилятором. В ядре Оба зависят от Системы. Строка. Равняется, как замечено в Отражателе.
Другая статья MSDN, которая предоставляет некоторую DOS и DON'Ts и рекомендации для какой метод сравнения использовать в различных случаях: Новые Рекомендации для Использования Строк в Microsoft.NET 2.0
Мог Ваше сообщение Ваш тест, который показывает, что вызов ToLower () быстрее, чем нечувствительное к регистру сравнение? Мои тесты показывают напротив быть верными! Независимо, точки других плакатов о правильности стоят.
var x = $('#container').clone().wrap('<p/>').parent().html();
. Идея обертки является большой, и выделите менее сложный тогда большинство предоставленных решений. – Pinkie 24 June 2011 в 11:18