|
|
package com.glxp.api.util;
|
|
|
|
|
|
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.exception.BadHanyuPinyinOutputFormatCombination;
|
|
|
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
/**
|
|
|
* 中文转拼音
|
|
|
*/
|
|
|
public class PinyinUtils {
|
|
|
|
|
|
//汉字转换位汉语拼音首字母,英文字符不变
|
|
|
public static String converterToFirstSpell(String chines) {
|
|
|
chines = cleanChar(chines);
|
|
|
String pinyinName = "";
|
|
|
char[] nameChar = chines.toCharArray();
|
|
|
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
|
|
|
defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
|
|
|
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
|
|
|
for (int i = 0; i < nameChar.length; i++) {
|
|
|
if (nameChar[i] > 128) {
|
|
|
try {
|
|
|
pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0);
|
|
|
} catch (BadHanyuPinyinOutputFormatCombination e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
} else {
|
|
|
pinyinName += nameChar[i];
|
|
|
}
|
|
|
}
|
|
|
return pinyinName;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 清理特殊字符以便得到
|
|
|
* @param chines
|
|
|
* @return
|
|
|
*/
|
|
|
public static String cleanChar(String chines) {
|
|
|
chines = chines.replaceAll("[\\p{Punct}\\p{Space}]+", ""); // 正则去掉所有字符操作
|
|
|
// 正则表达式去掉所有中文的特殊符号
|
|
|
String regEx = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}<>《》【】‘;:”“’。,、?ⅢγⅣβⅡⅠ×π]";
|
|
|
Pattern pattern = Pattern.compile(regEx);
|
|
|
Matcher matcher = pattern.matcher(chines);
|
|
|
chines = matcher.replaceAll("").trim();
|
|
|
return chines;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|