У меня есть две строки, которые равны с помощью InvariantCultureIgnoreCase:
Код: Выделить всё
string.Equals("est", "est", System.StringComparison.InvariantCultureIgnoreCase) // returns True
Использование IndexOf, как в этом примере
Поскольку st по спецификациям Unicode эквивалентно "ST".
Использование IndexOf, как в этом примере
Код: Выделить всё
"est".IndexOf("est", System.StringComparison.InvariantCultureIgnoreCase) // returns 0
Хотя, когда мы добавляем пробел ( " ") в исходную строку
Код: Выделить всё
" est".IndexOf("est", System.StringComparison.InvariantCultureIgnoreCase) // returns -1
Однако в .NET Framework 4.7.2
< pre class="lang-cs Prettyprint-override">
Код: Выделить всё
" est".IndexOf("est", System.StringComparison.InvariantCultureIgnoreCase) // returns 1
Ожидаемый результат в .NET:
Код: Выделить всё
"est".IndexOf("est", System.StringComparison.InvariantCultureIgnoreCase) // returns 0
" est".IndexOf("est", System.StringComparison.InvariantCultureIgnoreCase) // returns 1
Код: Выделить всё
"est".IndexOf("est", System.StringComparison.InvariantCultureIgnoreCase) // returns -1
" est".IndexOf("est", System.StringComparison.InvariantCultureIgnoreCase) // returns -1
Это ошибка в реализации .NET IndexOf? Есть ли обходной путь, который решает эту проблему?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -and-above