Я создал программу на Java для сравнения двух строк:
String s1 = "Hello";
String s2 = "hello";
if (s1.equals(s2)) {
System.out.println("hai");
} else {
System.out.println("welcome");
}
Он отображает «добро пожаловать». Я так понимаю, это чувствительно к регистру. Но моя проблема в том, что я хочу сравнить две строки без учета регистра. Т.е. ожидаю на выходе hai
.
s1.equalsIgnoreCase(s2)
вы можете не делать это везде, где это необходимо. Я предлагаю вам найти, откуда берется строка - возможно, из файла, базы данных или пользовательского ввода - и преобразовать ее в верхний (или нижний) регистр и продолжать использовать .equals для сравнения.
equalsIgnoreCase
подход. Прочтите о проблеме турецкого языка I и аналогичных проблемах с Unicode для обоснования.
equalsIgnoreCase
в любом случае возвращает неправильное значение для турецкого языка, потому что он возвращает true для сравнения «i» и «I», даже если он должен возвращать false. Так что я подозреваю, что если вы хотите принять во внимание региональные стандарты, лучше всего использовать a Collator
.
toLowerCase
/ toUpperCase
для всей строки и выполнение для каждого символа также дает два разных результата.