使用pinyin4j将汉字转化为拼音的例子

在合肥的时候,靠骗钱维生的电脑学校很多,而且确实骗到了许多钱,于是形成了良性循环,在电视上打广告,骗更多的钱。有个广告的末尾就是一憨厚的老大爷高兴地说:只有正规,才有机会啊!

某些情况下这句话很对。那些在网上被到处转贴的代码片段,我就不敢信赖,而且格式很乱也看不清楚。在找汉字转拼音程序的时候,我还是选择了pinyin4j,Source Forge上的项目,相对值得信赖。哦对了,这是Java的library.

一个简单的方法,使用pinyin4j转换字符串中的汉字为拼音,示例如下:

public static String toPinyin(String input) {
	StringBuilder sb = new StringBuilder();
	for (int i = 0; i < input.length(); i++) {
		char c = input.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) {
				logger.error(e.getMessage(), e);
			} catch (NullPointerException e) {
				// 如果是日文,可能抛出该异常
			}
			if (pinyin != null) {
				sb.append(pinyin);
			}
		}
	}
	return sb.toString();
}

其中用到的常量PINYIN_FORMAT是这样初始化的(输出时去除声调标记,发音“驴”的那个韵母用v表示):

PINYIN_FORMAT = new HanyuPinyinOutputFormat();
PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
PINYIN_FORMAT.setVCharType(HanyuPinyinVCharType.WITH_V);

因为汉字有多音字,所以PinyinHelper.toHanyuPinyinStringArray返回一个数组。这个方法图省事,就直接选择了第一个读音。如果可能的话,可以将遇到这种多音字的地方提出来,人工进行处理。

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.