依赖jar包
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
工具类
public class HanZi2PinYinUtil {
public static String getPinYin(String hanZi) {
String allPinYin = getAllPinYin(hanZi);
String res = "";
for (int i = 0; i < allPinYin.length(); i++) {
char c = allPinYin.charAt(i);
if (c == ' ') {
i++;
res += Character.toUpperCase(allPinYin.charAt(i));
} else {
res += c;
}
}
return res;
}
public static String getAllPinYin(String hanZi) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
char[] hanYuArr = hanZi.trim().toCharArray();
StringBuilder pinYin = new StringBuilder();
try {
for (int i = 0, len = hanYuArr.length; i < len; i++) {
if (Character.toString(hanYuArr[i]).matches("[\\u4E00-\\u9FA5]+")) {
String[] pys = PinyinHelper.toHanyuPinyinStringArray(hanYuArr[i], format);
pinYin.append(pys[0]).append(" ");
} else {
pinYin.append(hanYuArr[i]).append(" ");
}
}
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace();
}
pinYin.deleteCharAt(pinYin.length()-1);
return pinYin.toString();
}
public static String getFirstPinYin(String hanZi) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
StringBuilder firstPinyin = new StringBuilder();
char[] hanyuArr = hanZi.trim().toCharArray();
try {
for (int i = 0, len = hanyuArr.length; i < len; i++) {
if (Character.toString(hanyuArr[i]).matches("[\\u4E00-\\u9FA5]+")) {
String[] pys = PinyinHelper.toHanyuPinyinStringArray(hanyuArr[i], format);
firstPinyin.append(pys[0].charAt(0));
} else {
firstPinyin.append(hanyuArr[i]);
}
}
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace();
}
return firstPinyin.toString();
}
}
测试代码
public static void main(String[] args) {
String pinYin = HanZi2PinYinUtil.getAllPinyin("刘得华");
String firstPinYin = HanZi2PinYinUtil.getFirstPinYin("刘得华");
System.out.println("学习JAVA可以找到一份好的工作:"+pinYin);
System.out.println("学习JAVA可以找到一份好的工作:"+firstPinYin);
String res = getPinYin("梁云亮");
System.out.println(res);
}