一、导入依赖
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
二、新建工具类PingYinUtils(直接粘贴)
package com.aliyun.vuelogin.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.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
public class PingYinUtils {
public static HanyuPinyinOutputFormat PINYIN_FORMAT;
static {
PINYIN_FORMAT = new HanyuPinyinOutputFormat();
PINYIN_FORMAT.setCaseType(HanyuPinyinCaseType.LOWERCASE);
PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
PINYIN_FORMAT.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
}
public static String toFirstPinYin(String chinese) {
StringBuilder result = new StringBuilder();
char[] chars = chinese.toCharArray();
try {
for (char c : chars) {
if (String.valueOf(c).matches("[\u4e00-\u9fa5]+")) {
String[] pinyinStr = PinyinHelper.toHanyuPinyinStringArray(c, PINYIN_FORMAT);
result.append(pinyinStr[0].charAt(0));
} else {
result.append(c);
}
}
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace();
}
return result.toString();
}
public static String toPinYin(String chinese) {
StringBuilder result = new StringBuilder();
char[] chars = chinese.toCharArray();
try {
for (char c : chars) {
if (String.valueOf(c).matches("[\u4e00-\u9fa5]+")) {
String[] pinyinStr = PinyinHelper.toHanyuPinyinStringArray(c, PINYIN_FORMAT);
result.append(pinyinStr[0]);
} else {
result.append(c);
}
}
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace();
}
return result.toString();
}
public static String toUpperStringsFirstCharPinYin(String chinese) {
StringBuilder result = new StringBuilder();
char[] chars = chinese.toCharArray();
try {
for (char c : chars) {
if (String.valueOf(c).matches("[\u4e00-\u9fa5]+")) {
String[] pinyinStr = PinyinHelper.toHanyuPinyinStringArray(c, PINYIN_FORMAT);
String c1 = String.valueOf(pinyinStr[0]);
result.append(c1.substring(0, 1).toUpperCase()).append(c1.substring(1));
} else {
result.append(c);
}
}
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace();
}
return result.toString();
}
public static String getCnASCII(String cnStr) {
StringBuffer strBuf = new StringBuffer();
byte[] bGBK = cnStr.getBytes();
for (int i = 0; i < bGBK.length; i++) {
strBuf.append(Integer.toHexString(bGBK[i] & 0xff) + " ");
}
return strBuf.toString();
}
}
三、测试使用
package com.aliyun.vuelogin;
import com.aliyun.vuelogin.util.PingYinUtils;
public class PingYinTest {
public static void main(String[] args) {
String firstPinYin = PingYinUtils.toFirstPinYin("王安石").toUpperCase();
String pinYin = PingYinUtils.toPinYin("王安石");
String upperStringsFirstCharPinYin = PingYinUtils.toUpperStringsFirstCharPinYin("王安石");
String cnASCII = PingYinUtils.getCnASCII("王安石");
System.out.println(firstPinYin);
System.out.println(pinYin);
System.out.println(upperStringsFirstCharPinYin);
System.out.println(cnASCII);
}
}
运行结果
WAS
wanganshi
WangAnShi
e7 8e 8b e5 ae 89 e7 9f b3