Java漢字轉拼音pinyin4j用法

來源:互聯網
上載者:User

漢字轉換拼音在日常開發中是個很常見的問題。例如我們偉大的12306,在地名中輸入“WH”,就會出現“武漢”“蕪湖”“威海”等地名,輸入“WUHU”就會出現“蕪湖”。

 

Java擷取漢字的拼音,pinyin4j這個庫可以很好的解決這個問題。

:http://sourceforge.net/projects/pinyin4j/

下載解壓,裡面有個pinyin4j-2.5.0.jar,使用這個庫即可。

 

漢字轉拼音:

String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重');

上面這行代碼就是單個漢字轉拼音了,例如“重”字,該方法返回一個String類型的數組

"zhong4"

"chong2"

“重”是一個多音字,該方法的返回數組包含這個字的所有讀音的拼音。每個讀音最後有個數字就是音調(第一聲 第二聲 第三聲 第四聲,這個不用解釋了)。

 

上面是最簡單的一種擷取單個漢字的方式,還可以使用HanyuPinyinOutputFormat來格式化返回拼音的格式。

 

HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); // UPPERCASE:大寫  (ZHONG)// LOWERCASE:小寫  (zhong)format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// WITHOUT_TONE:無音標  (zhong)// WITH_TONE_NUMBER:1-4數字表示英標  (zhong4)// WITH_TONE_MARK:直接用音標符(必須WITH_U_UNICODE否則異常)  (zhòng)format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);// WITH_V:用v表示ü  (nv)// WITH_U_AND_COLON:用"u:"表示ü  (nu:)// WITH_U_UNICODE:直接用ü (nü)format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重', format);

toHanyuPinyinStringArray如果傳入的字元不是漢字不能轉換成拼音,那麼會直接返回null

 

雖然pinyin4j很好用,但是還是有局限的。以上代碼只能擷取單個漢字的拼音,但是不能擷取一個包含多音字的詞的拼音。例如“重慶”,無法判斷到底是“chongqing”還是“zhongqing”,pinyin4j不能通過上下文來判斷多音字的讀音。

 

所以,在擷取一個包含多音字的詞語的讀音,可以返回一個列表,正確的讀音只能是人工判斷選擇。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.