前言:以前师傅跟我说~如果别人有写好的现成的东西就不要自己瞎琢磨写了,除非是有特殊的需要,要不很难写的比别人的好。别人的是经过很多人验证过的,必然能适应大众的需要,你自己写一个又耽误时间又不一定效率高。现在看确实是。之前自己找了半天的如果将中文转换为汉语拼音的现成的工具类~到头来还是直接用pinyin4j来的方便。
pinyin4j官方网站:http://pinyin4j./
直接去下载最新的jar包在项目中引用就可以使用了。下面放出一个写好的例子。将中文转换为汉语拼音。生僻的字基本也没问题,很好用。
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将中文转换为汉语拼音 * @author hanxiaoyue */ public class CnToPinYin { public static String getPinYinStr(String cnstr) { StringBuilder sb = new StringBuilder(); HanyuPinyinOutputFormat PINYIN_FORMAT = new HanyuPinyinOutputFormat(); //返回的字符串中去除音调标记 PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE); //发音“驴(lu->lv)”的那个韵母用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()); } } |
|