【pinyin4j】使用pinyin4j将汉字转换为拼音

Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。

接下来我们就来实际体会一下,先定义一个类,初始化拼音格式

private HanyuPinyinOutputFormat format = null;
private String[] pinyin;

public Pinyin4jTest(){
	format = new HanyuPinyinOutputFormat();
	//设置需要转换的拼音格式
	format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
	pinyin = null;
}

对单个字进行转换

/**
 * 对单个字进行转换
 */
public  String getCharPinYin(char pinYinChar){
	
	try {
		//进行转换
		pinyin = PinyinHelper.toHanyuPinyinStringArray(pinYinChar, format);
		
	} catch (BadHanyuPinyinOutputFormatCombination e) {
		e.printStackTrace();
	}
	
	if (pinyin == null) {
		return null;
	}
	
	return pinyin[0];
}

对字符串进行转换

/**
 * 转换字符串
 * @param pinYinStr
 * @return
 */
public String getStringPinYin(String pinYinStr){
	StringBuffer sb = new StringBuffer();
	//中间字符串
	String tempStr = null;
	//遍历字符串
	for (int i = 0; i < pinYinStr.length(); i++) {
		tempStr = this.getCharPinYin(pinYinStr.charAt(i));
		if (tempStr == null) {
			//非汉字直接拼接
			sb.append(pinYinStr.charAt(i));
		}else{
			sb.append(tempStr);
		}
	}
	return sb.toString();
}

获取汉字串拼音首字母,英文字符不变

/**
 * 获取汉字串拼音首字母,英文字符不变
 * @param pinYinStr
 * @return
 * @throws BadHanyuPinyinOutputFormatCombination 
 */
public String firstSpell(String pinYinStr) throws BadHanyuPinyinOutputFormatCombination{
	if (StringUtils.isBlank(pinYinStr)) {
		return "";
	}
	StringBuffer sb = new StringBuffer();
	char[] arr = pinYinStr.toCharArray();
	format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
	format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
	for (int i = 0; i < arr.length; i++) {
		if (arr[i] > 128) {
			String[] pinYins = PinyinHelper.toHanyuPinyinStringArray(arr[i], format);
			if (pinYins != null) {
				sb.append(pinYins[0].charAt(0));
			}
			
		}else{
			sb.append(arr[i]);
		}
	}
	
	return sb.toString().replaceAll("\\W", "").trim();
}

测试一下:

public static void main(String[] args) throws Exception {
	Pinyin4jTest pinyin4jTest = new Pinyin4jTest();
	String tranChar = pinyin4jTest.getCharPinYin('长');
	System.out.println(tranChar);
	System.out.println("-----------");
	String tranStr = pinyin4jTest.getStringPinYin("长江后,浪推前浪");
	System.out.println(tranStr);
	System.out.println("-----------");
	String firstSpell = pinyin4jTest.firstSpell("前浪死在沙滩上");
	System.out.println(firstSpell);
}




你可能感兴趣的:(------,java组件学习,①java学习)