您的位置:首页 > 其它

汉字转换拼音工具

2017-11-08 10:21 253 查看

汉字转换拼音工具

可以直接使用并根据自己的业务需求进行后期处理

···

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;

/**

* @author zcj

* 中文工具

*/

public class ChineseUtils {

public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination {

System.out.println(chineseToPinYin("吕洞宾"));
}

/**
* 将汉字转换为汉语拼音
* @param src 原字符窜
* @return 转换后的字符窜
* @throws BadHanyuPinyinOutputFormatCombination 错误的汉语拼音输出格式异常
*/
public static String chineseToPinYin( String src ) throws BadHanyuPinyinOutputFormatCombination{

if( src.length() <= 0 ){
return "请输入正确的汉字或词组";
}
//输出拼音样式格式化器
HanyuPinyinOutputFormat hanFormat = new HanyuPinyinOutputFormat();
//-----------------------------------设置转化后的声调格式---------------------------------------//
//hanFormat.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER);//使用数字表示声调 如:赵 zhao4
hanFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);    //表示无声,去除声调显示 如:赵 zhao
//hanFormat.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);  //使用声调显示 如:正常显示声调
//-----------------------------------设置转化后的声调格式---------------------------------------//

//-----------------------------------设置特殊拼音ü的显示格式-------------------------------------//
//hanFormat.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);  //使用u和:表示 ü 如:lu:
//hanFormat.setVCharType(HanyuPinyinVCharType.WITH_V);  //使用v表示 如:lv
hanFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);  //使用ü表示 正常显示
//-----------------------------------设置特殊拼音ü的显示格式-------------------------------------//

//-----------------------------------设置拼音大小写的显示方式-------------------------------------//
hanFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); //全部以小写的方式显示
//hanFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); //全部以大写的方式显示
//-----------------------------------设置拼音大小写的显示方式-------------------------------------//

//原字符串
char[] srcArr = src.trim().toCharArray();

StringBuilder endStr = new StringBuilder();
//以下多个判断可以合并,但是也可以自己做特殊处理
if( srcArr.length > 0 && null !
4000
= srcArr ){
//遍历转换封装
for (int i = 0; i < srcArr.length; i++) {
//如果是中文进行转换
if( Character.toString(srcArr[i]).matches("[\\u4E00-\\u9FA5]+") ){
String[] str = PinyinHelper.toHanyuPinyinStringArray(srcArr[i], hanFormat);
endStr.append(str[0]);
//如果是小写字母 a-z 则正常输出
}else if(((int)srcArr[i]>=65 && (int)srcArr[i]<=90)){
endStr.append(srcArr[i]);
//如果是大写字母 A-Z 则正常输出
}else if(((int)srcArr[i]>=97 && (int)srcArr[i]<=122)){
endStr.append(srcArr[i]);
//如果是数字 0-9 则正常输出
}else if((int)srcArr[i]>=48 && (int)srcArr[i]<=57){
endStr.append(srcArr[i]);
//如果是其他特殊字符 鸳鸯输出
}else{
endStr.append(srcArr[i]);
}
}
}

return endStr.toString();
}


}

···
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: