3 回答

TA貢獻1906條經(jīng)驗 獲得超10個贊
最好是使用s1.equalsIgnoreCase(s2):(請參閱javadoc)
您也可以將它們都轉(zhuǎn)換為大寫/小寫并使用 s1.equals(s2)

TA貢獻1820條經(jīng)驗 獲得超10個贊
String.equalsIgnoreCase 是不區(qū)分大小寫的幼稚字符串比較的最實用選擇。
但是,很高興知道此方法既不進行全大小寫折疊也不進行分解,因此無法執(zhí)行Unicode標準中指定的無大小寫匹配。實際上,JDK API不提供對有關(guān)大小寫折疊字符數(shù)據(jù)的信息的訪問,因此,最好將這項工作委派給一個久經(jīng)考驗的第三方庫。
該庫是ICU,這是一種實現(xiàn)不區(qū)分大小寫的字符串比較的實用程序的方法:
import com.ibm.icu.text.Normalizer2;
// ...
public static boolean equalsIgnoreCase(CharSequence s, CharSequence t) {
Normalizer2 normalizer = Normalizer2.getNFKCCasefoldInstance();
return normalizer.normalize(s).equals(normalizer.normalize(t));
}
String brook = "?u\u0308?chen";
String BROOK = "FLüSSCHEN";
assert equalsIgnoreCase(brook, BROOK);
即使對這種簡單測試String.equalsIgnoreCase,用,或String.equals對大寫或小寫字符串的幼稚比較也會失敗。
(請注意,盡管預定義的案例折疊樣式getNFKCCasefoldInstance是與語言環(huán)境無關(guān)的;對于土耳其語語言環(huán)境,UCharacter.foldCase可能需要進行更多工作。)
添加回答
舉報