Наверняка все вы пользовались таким прекрасным методом, как toLowerCase(). Да, очень удобный метод для перевода символов в нижний регистр. Но есть один нюанс о котором вы должны знать.
toLowerCase() выполняет преобразования относительно вашей локали. При вызове toLowerCase() в действительности вызывается toLowerCase(Locale.getDefault()).
Давайте рассмотрим следующий пример:
И что у нас на выходе? А вот что:
str: Í 1
lowStr: i̇́ 3
Вы это видите? Длина строки увеличилась с 1 до 3! Это может стать причиной трудноуловимой ошибки, если вы не знаете об этой особенности toLowerCase(). Но теперь-то вы в курсе. ;)
Удачи!
toLowerCase() выполняет преобразования относительно вашей локали. При вызове toLowerCase() в действительности вызывается toLowerCase(Locale.getDefault()).
Давайте рассмотрим следующий пример:
import java.util.Locale;
public class Temp {
public static void main(String args[]){
Locale.setDefault(new Locale("lt")); //Литва
String str = "\u00cd";
System.out.println("str: "+str+" "+str.length());
String lowStr = str.toLowerCase();
System.out.println("lowStr: "+lowStr+" "+lowStr.length());
}
}
И что у нас на выходе? А вот что:
str: Í 1
lowStr: i̇́ 3
Вы это видите? Длина строки увеличилась с 1 до 3! Это может стать причиной трудноуловимой ошибки, если вы не знаете об этой особенности toLowerCase(). Но теперь-то вы в курсе. ;)
Удачи!
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.