JAVA实现汉字转换为拼音 pinyin4j/JPinyin

您所在的位置:网站首页 java中文转拼音工具 JAVA实现汉字转换为拼音 pinyin4j/JPinyin

JAVA实现汉字转换为拼音 pinyin4j/JPinyin

2024-07-17 19:52| 来源: 网络整理| 查看: 265

在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,比如说通讯录,就会要求按名字首字符发音排序,如果自己写实现这方面的功能是个很好大的工程,还好网上有公开的第三方jar支持转换,结合网上很多前辈的代码,copy了两个简单的工具方法,供参考

第一个是使用pinyin4j的jar,此jar对多音字语句的处理不太理想

package com.lovo.utils; import org.springframework.stereotype.Component; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; /** * pinyin4j汉字转拼音工具类 * @author zhiheng * */ @Component public class ChangeToPinYin { //pinyin4j格式类 private HanyuPinyinOutputFormat format = null; //拼音字符串数组 private String[]pinyin; //通过构造方法进行初始化 public ChangeToPinYin(){ format = new HanyuPinyinOutputFormat(); /* * 设置需要转换的拼音格式 * 以天为例 * HanyuPinyinToneType.WITHOUT_TONE 转换为tian * HanyuPinyinToneType.WITH_TONE_MARK 转换为tian1 * HanyuPinyinVCharType.WITH_U_UNICODE 转换为tiān * */ format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); pinyin = null; } /** * 对单个字进行转换 * @param pinYinStr 需转换的汉字字符串 * @return 拼音字符串数组 */ public String getCharPinYin(char pinYinStr){ try { //执行转换 pinyin = PinyinHelper.toHanyuPinyinStringArray(pinYinStr, format); } catch (BadHanyuPinyinOutputFormatCombination e) { // TODO Auto-generated catch block e.printStackTrace(); } //pinyin4j规则,当转换的符串不是汉字,就返回null if(pinyin == null){ return null; } //多音字会返回一个多音字拼音的数组,pinyiin4j并不能有效判断该字的读音 return pinyin[0]; } /** * 对单个字进行转换 * @param pinYinStr * @return */ public String getStringPinYin(String pinYinStr){ StringBuffer sb = new StringBuffer(); String tempStr = null; //循环字符串 for(int i = 0; i


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3