java.text.Collator 類的具體使用方法

來源:互聯網
上載者:User

Collator 用來簡化我們處理各種語言之間的差別性。Collator 主要處理:

  • 正常化的典型等效 字元
  • 多層次的比較

通過比較字串 Unicode 位元組的 code point 來進行Java字串的比較。這將意味著在Unicode代碼圖表字元位置指定的排序權重,但事實並非如此。語言可能有完全相同的字元而不同的排序權重。

例如,你完全不懂德語,你可能希望 ß (\u00DF) 被當作 b 或者 B 來進行排序,但事實上是 ss,在該語言中 ß 的排序值高於正常的 s。

而多層次的比較指的是提供4種比較層級:基底字元、口音、case、標點符號。

需要注意的是 Collator 不支援標點符號。

來看看一些具體的關於多層次比較例子的代碼:

System.out.println("a equals b -> " + (collator.compare("a", "b")==0 ? "true":"false"));System.out.println("a equals à -> " + (collator.compare("a", "à")==0 ? "true":"false"));System.out.println("A equals a -> " + (collator.compare("a", "A")==0 ? "true":"false"));

 

當 collator.setStrength(Collator.PRIMARY):

a equals b -> false
a equals à -> true
A equals a -> true

當 collator.setStrength(Collator.SECONDARY):

a equals b -> false
a equals à -> false
A equals a -> true

當 collator.setStrength(Collator.TERTIARY):

a equals b -> false
a equals à -> false
A equals a -> false

還有下面這段代碼,儘管第一行輸出的是 false ,但是他們看起來確實完全相同的字串:

collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);String single = "abgaskr\u00FCmmerdichtung";String combined = "abgaskr\u0075\u0308mmerdichtung";System.out.println("Single equals combined? " +     (collator.compare(single, combined) == 0 ? "true": "false"));

等等,種子 Collator 類理解起來挺費勁,但當你需要處理各種不同語言時,你還真離不開它。

你可以從這裡查看
Collator 類的 JavaDoc 文檔。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.