日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zbb20180117 汉字转拼音 pinyin4

發布時間:2023/12/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zbb20180117 汉字转拼音 pinyin4 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
包地址 https://pan.baidu.com/disk/home?#list/vmode=list&path=%2F%E5%AD%A6%E4%B9%A0 Pinyin4j的基本用法 1.?簡單介紹 有時候,需要將漢字編程對應的拼音,以方便數據的處理。比如在Android手機應用的開發上,要查詢聯系人的姓名,通常都是用拼音進行查詢的。比如要查詢曹孟德,就可以輸入cmd,即曹孟德三個漢字的拼音caomengde各字的首字母。但是怎樣才能將曹孟德翻譯成caomengde呢?很簡單的辦法就是建立一個大的對照表(比如用關聯容器Map),比如<cao><”?meng><”?de>但這樣的做法,需要維護好一個比較大的對照表,同時一個漢字可能有多個發音,也就是說Map這樣的容器時不行的,因為其<key,value>必須是一一對應的。在C++中可以用STL里面的multimap來解決這個問題,但Java中沒有類似multimap這樣的東西,除非自己實現一個。 ? Pinyin4j就是為了解決類似這樣的問題的。它是sourceforge.net上的一個開源項目,功能非常強大: +?支持同一漢字有多個發音 +?還支持拼音的格式化輸出,比如第幾聲之類的, +?同時支持簡體中文、繁體中文轉換為拼音使用起來也非常簡單。下面是其官方網址,其中提供了下載: http://pinyin4j.sourceforge.net/ ? 2.?基本用法: 通常情況下,只需要用到其中的PinyinHelper類中的靜態方法toHanyuPinyinStringArray就可以了,比如: String[]?pinyinArray?=PinyinHelper.toHanyuPinyinStringArray(''); for(int?i?=?0;?i?<?pinyinArray.length;?++i) { System.out.println(pinyinArray[i]); } 就會輸出: dan1 chan2 shan4 這三種發音,后面的數字代表第幾聲。可以看到靜態方法toHanyuPinyinStringArray返回的數據類型是一個String數組,它用來接收一個漢字的多個發音,如果toHanyuPinyinStringArray中的參數不是漢字,那么它會返回null ? 3.格式支持 Pinyin4j支持拼音輸出的格式化,比如,可以輸出為huanghuang2huáng等等,下面的代碼就似是輸出huáng的示例: HanyuPinyinOutputFormat?format=?new?HanyuPinyinOutputFormat(); format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK); format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); ? String[]?pinyinArray?=?null; try { pinyinArray?=?PinyinHelper.toHanyuPinyinStringArray('',?format); } catch(BadHanyuPinyinOutputFormatCombination?e) { e.printStackTrace(); } for(int?i?=?0;?i?<?pinyinArray.length;?++i) { System.out.println(pinyinArray[i]); } 此外,還支持大小寫轉換、ü等等。詳細情況,可以查看Pinyin4j自帶的文檔。 ? 4.實際示例代碼 如果我們要將一段文字中的漢字全部轉換成不帶音調的拼音輸出,而這段文字中又可能包含阿拉伯數字、英文、標點符號等等。如果完全靠自己寫代碼進行轉換,那是非常麻煩的,其中一個首先就要區別,這段文字中那些是漢字,那些是非漢字。有了Pinyin4j,這個問題就不再困難了,因為對于非漢字,Pinyin4j會自動輸出null。參考下面的示例代碼: importnet.sourceforge.pinyin4j.*; importnet.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; importnet.sourceforge.pinyin4j.format.HanyuPinyinToneType; importnet.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; ? public?class?Chinese2PY { public?static?void?main(String[]?args) { Hanyu?hanyu?=?new?Hanyu(); //?中英文混合的一段文字 String?str?=?"荊溪白石出,Hello?天寒紅葉稀。Android?山路元無雨,What's?up??空翠濕人衣。"; String?strPinyin?=?hanyu.getStringPinYin(str); System.out.println(strPinyin); } } ? class?Hanyu { private?HanyuPinyinOutputFormat?format?=?null; private?String[]?pinyin; ? public?Hanyu() { format?=?new?HanyuPinyinOutputFormat(); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); ? pinyin?=?null; } ? //轉換單個字符 public?String?getCharacterPinYin(char?c) { try { pinyin?=?PinyinHelper.toHanyuPinyinStringArray(c,?format); } catch(BadHanyuPinyinOutputFormatCombination?e) { e.printStackTrace(); } ? //?如果c不是漢字,toHanyuPinyinStringArray會返回null if(pinyin?==?null)?return?null; ? //?只取一個發音,如果是多音字,僅取第一個發音 return?pinyin[0]; } ? //轉換一個字符串 public?String?getStringPinYin(String?str) { StringBuilder?sb?=?new?StringBuilder(); String?tempPinyin?=?null; for(int?i?=?0;?i?<?str.length();?++i) { tempPinyin?=getCharacterPinYin(str.charAt(i)); if(tempPinyin?==?null) { //?如果str.charAt(i)非漢字,則保持原樣 sb.append(str.charAt(i)); } else { sb.append(tempPinyin); } } return?sb.toString(); } }

轉載于:https://www.cnblogs.com/super-admin/p/8303633.html

總結

以上是生活随笔為你收集整理的zbb20180117 汉字转拼音 pinyin4的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。