Я просматривал openjdk и замечал странный путь кода в String.equalsIgnoreCase, в частности метод regionMatches:
if (ignoreCase) {
// If characters don't match but case may be ignored,
// try converting both characters to uppercase.
// If the results match, then the comparison scan should
// continue.
char u1 = Character.toUpperCase(c1);
char u2 = Character.toUpperCase(c2);
if (u1 == u2) {
continue;
}
// Unfortunately, conversion to uppercase does not work properly
// for the Georgian alphabet, which has strange rules about case
// conversion. So we need to make one last check before
// exiting.
if (Character.toLowerCase(u1) == Character.toLowerCase(u2)) {
continue;
}
}
Я понимаю комментарий о настройке для конкретного алфавита, чтобы проверить равенство в нижнем регистре, но задавался вопросом, почему даже проверка в верхнем регистре? Почему бы просто не сделать все строчные буквы?