pinyin4j 汉语转拼音

阅读更多

pinyin4j提供了汉语转拼音的一个开源库, 支持多种拼音系统:汉语拼音、 通用拼音 、威氏拼音、注音二式、雅礼、
国语罗马字。但当前版本貌似不支持根据上下文来识别多音字的功能。

http://pinyin4j.sourceforge.net/

写个小例子试了一下,多音字简单的取第一个读音:

package edu.jlu.fuliang;

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;

public class Pinyin4jTest {
    public static String getPinYin(String src) {
	StringBuilder pinyinBuf = new StringBuilder();
	HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
	outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
	outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
	outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);

	try {
	    for (int i = 0; i < src.length(); i++) {
		String[] pinYins = PinyinHelper.toHanyuPinyinStringArray(src.charAt(i),
			outputFormat);
		if (pinYins != null && pinYins.length > 0) {// 汉语
		    pinyinBuf.append(pinYins[0]);
		} else {// 非汉语
		    pinyinBuf.append(src.charAt(i));
		}
	    }
	} catch (BadHanyuPinyinOutputFormatCombination e) {
	    e.printStackTrace();
	}
	return pinyinBuf.toString();
    }

    public static void main(String[] args) {
	System.out.println(getPinYin("Hello,欢迎来到长春"));
    }
}
 

输出

Hello,huanyinglaidaozhangchun
 

 

 

你可能感兴趣的:(.net)