亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使我的字符串比較不區分大小寫?

如何使我的字符串比較不區分大小寫?

慕工程0101907 2019-11-28 10:32:26
我創建了一個Java程序來比較兩個字符串:String s1 = "Hello";String s2 = "hello";if (s1.equals(s2)) {    System.out.println("hai");} else {    System.out.println("welcome");}它顯示“歡迎”。我了解它區分大小寫。但是我的問題是我想比較兩個不區分大小寫的字符串。即我希望輸出是hai。
查看完整描述

3 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

最好是使用s1.equalsIgnoreCase(s2):(請參閱javadoc)

您也可以將它們都轉換為大寫/小寫并使用 s1.equals(s2)


查看完整回答
反對 回復 2019-11-28
?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

String.equalsIgnoreCase 是不區分大小寫的幼稚字符串比較的最實用選擇。


但是,很高興知道此方法既不進行全大小寫折疊也不進行分解,因此無法執行Unicode標準中指定的無大小寫匹配。實際上,JDK API不提供對有關大小寫折疊字符數據的信息的訪問,因此,最好將這項工作委派給一個久經考驗的第三方庫。


該庫是ICU,這是一種實現不區分大小寫的字符串比較的實用程序的方法:


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是與語言環境無關的;對于土耳其語語言環境,UCharacter.foldCase可能需要進行更多工作。)


查看完整回答
反對 回復 2019-11-28
  • 3 回答
  • 0 關注
  • 755 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號