前言:以前師傅跟我說(shuō)~如果別人有寫好的現(xiàn)成的東西就不要自己瞎琢磨寫了,除非是有特殊的需要,要不很難寫的比別人的好。別人的是經(jīng)過很多人驗(yàn)證過的,必然能適應(yīng)大眾的需要,你自己寫一個(gè)又耽誤時(shí)間又不一定效率高。現(xiàn)在看確實(shí)是。之前自己找了半天的如果將中文轉(zhuǎn)換為漢語(yǔ)拼音的現(xiàn)成的工具類~到頭來(lái)還是直接用pinyin4j來(lái)的方便。
pinyin4j官方網(wǎng)站:http://pinyin4j./
直接去下載最新的jar包在項(xiàng)目中引用就可以使用了。下面放出一個(gè)寫好的例子。將中文轉(zhuǎn)換為漢語(yǔ)拼音。生僻的字基本也沒問題,很好用。
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; /** * 使用pinyin4j將中文轉(zhuǎn)換為漢語(yǔ)拼音 * @author hanxiaoyue */ public class CnToPinYin { public static String getPinYinStr(String cnstr) { StringBuilder sb = new StringBuilder(); HanyuPinyinOutputFormat PINYIN_FORMAT = new HanyuPinyinOutputFormat(); //返回的字符串中去除音調(diào)標(biāo)記 PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE); //發(fā)音“驢(lu->lv)”的那個(gè)韻母用v表示 PINYIN_FORMAT.setVCharType(HanyuPinyinVCharType.WITH_V); for(int i = 0; i < cnstr.length(); i++) { char c = cnstr.charAt(i); if(c <= 255) { sb.append(c); } else { String pinyin = null; try { String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c,PINYIN_FORMAT); pinyin = pinyinArray[0]; } catch (BadHanyuPinyinOutputFormatCombination e) { e.getMessage(); } catch (NullPointerException e) { // 如果是日文,可能拋出該異常 } if (pinyin != null) { sb.append(pinyin); } } } //System.out.println(sb.toString()); return sb.toString(); } public static void main(String[] args) { String cnstr = ""; StringBuilder sb = new StringBuilder(); HanyuPinyinOutputFormat PINYIN_FORMAT = new HanyuPinyinOutputFormat(); PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE); PINYIN_FORMAT.setVCharType(HanyuPinyinVCharType.WITH_V); for (int i = 0; i < cnstr.length(); i++) { char c = cnstr.charAt(i); if (c <= 255) { sb.append(c); } else { String pinyin = null; try { String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c,PINYIN_FORMAT); pinyin = pinyinArray[0]; } catch (BadHanyuPinyinOutputFormatCombination e) { e.getMessage(); } catch (NullPointerException e) { // 如果是日文,可能拋出該異常 } if (pinyin != null) { sb.append(pinyin); } } } System.out.println(sb.toString()); } } |
|