2つの文字列を比較するJavaプログラムを作成しました。
String s1 = "Hello";
String s2 = "hello";
if (s1.equals(s2)) {
System.out.println("hai");
} else {
System.out.println("welcome");
}
「ようこそ」と表示されます。大文字と小文字が区別されることを理解しています。しかし、私の問題は、大文字と小文字を区別せずに2つの文字列を比較したいことです。つまり、出力が期待されますhai
。
s1.equalsIgnoreCase(s2)
すると、必要なすべての場所で失敗する可能性があります。文字列がどこから来たのかを見つけてください-おそらくファイルまたはデータベースまたはユーザー入力-そして大文字(または小文字)に変換し、比較のために.equalsを使い続けます。
equalsIgnoreCase
。受け入れられているアプローチを使用してください。トルコ語のI問題と、その根拠となる類似のUnicode問題について読んでください。
equalsIgnoreCase
は、 "i"と "I"を比較するとtrueを返すため、falseを返す必要があるにもかかわらず、トルコ語に対して誤った値を返します。したがって、ロケールを考慮に入れたい場合Collator
は、実際にはaを使用する方法だと思います。
toLowerCase
/を実行toUpperCase
し、文字ごとに行うと、2つの異なる結果が得られると記載されています。