package com.nanjing.water.common.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;
|
|
public final class PinYinUtil {
|
private PinYinUtil() {
|
throw new IllegalStateException("Utility class");
|
}
|
|
/**
|
* 获取中文全拼
|
*
|
* @param name 需要转换的中文
|
* @return 全拼结果
|
**/
|
public static String getFullPinyin(String name) {
|
// 创建格式化对象
|
HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
|
//设置大小写格式
|
outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
|
//设置声调格式
|
outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
|
// 放置输入结果
|
StringBuilder result = new StringBuilder();
|
// 字符数组
|
char[] charArray = name.toCharArray();
|
// 遍历字符
|
for (char c : charArray) {
|
// 中文会被变成全拼,非中文会被直接拼接在结果字符串中
|
if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
|
String[] pinyinArray = new String[0];
|
try {
|
pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, outputFormat);
|
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
|
badHanyuPinyinOutputFormatCombination.printStackTrace();
|
}
|
if (pinyinArray != null) {
|
result.append(pinyinArray[0]);
|
}
|
} else {
|
result.append(c);
|
}
|
}
|
return result.toString();
|
}
|
|
/**
|
* 获取中文首字母
|
*
|
* @param name 需要转换的中文
|
* @return 首字母结果
|
**/
|
public static String getPinyinInitial(String name) {
|
// 创建格式化对象
|
HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
|
//设置大小写格式
|
outputFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
|
//设置声调格式
|
outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
|
// 放置输入结果
|
StringBuilder result = new StringBuilder();
|
// 字符数组
|
char[] charArray = name.toCharArray();
|
// 遍历字符
|
for (char c : charArray) {
|
// 中文会被变成拼音首字母,非中文会被直接拼接在结果字符串中
|
if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
|
String[] pinyinArray = new String[0];
|
try {
|
pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, outputFormat);
|
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
|
badHanyuPinyinOutputFormatCombination.printStackTrace();
|
}
|
if (pinyinArray != null) {
|
result.append(pinyinArray[0].charAt(0));
|
}
|
} else {
|
result.append(c);
|
}
|
}
|
return result.toString();
|
}
|
|
}
|