equalsIgnoreCase Java перестал работать с ß (“Sharp S”, используемый в немецком алфавите)

Можно использовать ECMAScript 6's String.prototype.startsWith() метод, но это еще не поддерживается во всех браузерах . Вы захотите использовать контейнер/полизаливку для добавления его на браузерах, которые не поддерживают его. При создании реализации, которая выполняет , являются немного сложными все подробности, размеченные в спецификации . Если Вы хотите верный контейнер, используйте также:

, Как только Вы шиммировали метод (или если Вы только поддерживаете браузеры и механизмы JavaScript, которые уже имеют его), можно использовать его как это:

"Hello World!".startsWith("He"); // true

var haystack = "Hello world";
var prefix = 'orl';
haystack.startsWith(prefix); // false

15
задан targumon 26 August 2009 в 11:18
поделиться

4 ответа

Until recently, Unicode didn't define an uppercase version of s-sharp. I'm not sure whether the latest Java 7 version does already include this new character and whether it handles it correctly. I suggest to give it a try.

The reason why str.toLowerCase() doesn't return the same as str.toUpperCase().toLowerCase() is that Java replaces ß with SS but there is no way to go back, so SS becomes ss and the compare fails.

So if you need to level the case, you must use str.toLowerCase(). If not, then simply calling equalsIgnoreCase() without any upper/lower conversion should work, too.

10
ответ дан 1 December 2019 в 04:34
поделиться

Он есть у Аарона Дигуллы . Кроме того, не имеет смысла преобразовывать строку при отсутствии данных локали. В английском верхнем регистре i будет I , а в турецком - İ . String.compareIgnoreCase не принимает во внимание данные языкового стандарта.

(Кроме того, вы можете захотеть изучить нормализацию , или вы в конечном итоге задаетесь вопросом, почему «é» .equals («é») может возвращать false. Причина: одна - это объединяющая последовательность .)

2
ответ дан 1 December 2019 в 04:34
поделиться

Unicode не определяет версию s-sharp в верхнем регистре в этом и суть - в немецком языке нет возможности, чтобы диез (ß) было заглавной или первой буквой любого слова. поэтому это просто бессмысленный спор о заглавной ß ...

2
ответ дан 1 December 2019 в 04:34
поделиться

Hm. I don't know anything about the German language, but I'm not sure how I feel about Unicode characters being treated as equivalent to some Roman-letter expansion. Should you be able to do the following?

myDictionary.put("glasses", new Bifocals());
myDictionary.get("glaßes");

If you have your druthers, myDictionary.get("glaßes") should return something the Bifocals from before. Is that legit?

0
ответ дан 1 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: