Странные результаты IndexOf на немецкой струне
У меня есть строка "Ärger, -Ökonom-i-Übermut-ẞ-ß", и когда я запускаю IndexOf ( "-" ), я получаю результат 23. Если я использую Replace
на той же строке, ничего не заменяется.
Я не понимаю, что происходит, так может кто-то пролить свет на эту проблему? Культура приложения установлена на хорватском, это не немецком языке, а каркасная версия - 3.5.
Изменение культуры на немецкий (de-DE) не изменяет этого странного поведения.
Вот скриншот от отладчика:
![enter image description here]()
Ответы
Ответ 1
Поскольку г-н Листер не хочет заслуженных заслуг, я вставлю здесь свой комментарий и приму ответ.
Я боюсь, что U + 1E9E undefined в соответствии с .NET 3.5, потому что этот символ не существовал в Unicode 4.0 (или любой другой версии Использование Unicode.NET 3.5). Это довольно новое дополнение (версия в верхнем регистре немецкого языка ß). Поэтому функция IndexOf игнорирует ее. Если у тебя есть контроль над текстом, вы можете изменить символ на ß или SS, что более целесообразно. Конечно, лучшим решением является обновите .NET до версии 4.0!
Ответ 2
IndexOf
использует текущую культуру, если вы не говорите об этом иначе:
Этот метод выполняет слово (чувствительный к регистру и чувствительный к культуре) поиск с использованием текущей культуры.
Replace
использует порядковое сравнение:
Этот метод выполняет порядковый номер (с учетом регистра и нечувствительность к культуре), чтобы найти oldValue
.