浏览 7755 次
锁定老帖子 主题:pinyin4j的一个例子(汉语转拼音)
精华帖 (0) :: 良好帖 (1) :: 新手帖 (7) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-03
Demo: package cn.astrocom.itv.vod.server.web.util; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; 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; /** * Change chinese to pin yin 中文转拼音 * * @author chengbao_zhu(chanball) * */ public class ChangeZhongWenToPinYin { // log private static Log log = LogFactory.getLog(ChangeZhongWenToPinYin.class); /** * 获取拼音 * * @param zhongwen * @return * @throws BadHanyuPinyinOutputFormatCombination */ public static String getPinYin(String zhongwen) throws BadHanyuPinyinOutputFormatCombination { log.debug("-------->>Input ZhongWen=" + zhongwen); String zhongWenPinYin = ""; char[] chars = zhongwen.toCharArray(); for (int i = 0; i < chars.length; i++) { String[] pinYin = PinyinHelper.toHanyuPinyinStringArray(chars[i], getDefaultOutputFormat()); // 当转换不是中文字符时,返回null if (pinYin != null) { zhongWenPinYin += capitalize(pinYin[0]); } else { zhongWenPinYin += chars[i]; } } log.debug("-------->>Output PinYin=" + zhongWenPinYin); return zhongWenPinYin; } /** * Default Format 默认输出格式 * * @return */ public static HanyuPinyinOutputFormat getDefaultOutputFormat() { HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写 format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 没有音调数字 format.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);// u显示 return format; } /** * Capitalize 首字母大写 * * @param s * @return */ public static String capitalize(String s) { char ch[]; ch = s.toCharArray(); if (ch[0] >= 'a' && ch[0] <= 'z') { ch[0] = (char) (ch[0] - 32); } String newString = new String(ch); return newString; } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-07-06
楼主,貌似目前的pinyin4j不支持多音字哦
|
|
返回顶楼 | |
发表时间:2009-07-08
每次转的时候,它都会生成一个数组,也就是说转一个词的时候,它会返回几个拼音的数组,这会不会是多音的支持呢,不过一般第一个是最准的,所以我的例子里选的就是第一个
|
|
返回顶楼 | |
发表时间:2009-11-04
pinyin4j支持多音字的。
|
|
返回顶楼 | |
发表时间:2009-12-01
最后一个发音大部分情况下貌似是作为姓氏的发音
|
|
返回顶楼 | |