Наверняка все вы пользовались таким прекрасным методом, как 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(). Но теперь-то вы в курсе. ;)
Удачи!
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.