根据汉字转拼音
- 引入pom
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
- 代码
public static String getFullSpell(String hanzhis) {
return getPinYin(hanzhis, false);
}
public static String getFirstSpell(String hanzhis) {
return getPinYin(hanzhis, true);
}
private static String getPinYin(String hanzhis, boolean isHeadChar) {
char[] hanzhi = hanzhis.toCharArray();
HanyuPinyinOutputFormat formatParam = new HanyuPinyinOutputFormat();
formatParam.setCaseType(HanyuPinyinCaseType.LOWERCASE);
formatParam.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
formatParam.setVCharType(HanyuPinyinVCharType.WITH_V);
StringBuilder py = new StringBuilder();
Pattern pattern = Pattern.compile("[\\u4E00-\\u9FA5]+");
for (int i = 0; i < hanzhis.length(); i++) {
char c = hanzhi[i];
Matcher matcher = pattern.matcher(String.valueOf(c));
if (!matcher.matches()) {
py.append(c);
continue;
}
try {
String[] t2 = PinyinHelper.toHanyuPinyinStringArray(c, formatParam);
if(t2!=null && t2.length>0){
if (isHeadChar) {
py.append(t2[0].charAt(0));
} else {
py.append(t2[0]);
}
}
else {
py.append(c);
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
py.append(c);
}
}
return py.toString();
}