本片博客主要用来记录一个汉字转化为拼音的工具类(pinyin4j->PinYinUtil ),方便后期使用。
引Pom依赖
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
具体实现工具
package cn.cc.cloud.edge.synchronization.util;
import cn.cc.cloud.edge.common.exception.BusinessException;
import lombok.extern.slf4j.Slf4j;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
@Slf4j
public class PinYinUtil {
/**
* 获取中文汉字的拼音
*
* @param chinese 获取的目标字符串
* @param firstLetter 是否取首字母
* @param upper 大写/小写
* @return
*/
public static String getPinYin(String chinese, boolean firstLetter, boolean upper) {
char[] chineseArra = chinese.toCharArray();
HanyuPinyinOutputFormat hypyFormat = new HanyuPinyinOutputFormat();
//判断是大写字母还是小写字母
if (upper) {
hypyFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
} else {
hypyFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
}
hypyFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
String pinyin = "";
try {
//判断是全拼还是首字母
if (firstLetter) {
for (int i = 0; i < chineseArra.length; i++) {
//"[\u4e00-\u9fa5]+"汉字的正则表达式
if (String.valueOf(chineseArra[i]).matches("[\u4e00-\u9fa5]+")) {
pinyin += PinyinHelper.toHanyuPinyinStringArray(chineseArra[i], hypyFormat)[0].substring(0, 1);
}else if(String.valueOf(chineseArra[i]).matches("[a-zA-Z0-9]+")){//英文字母或数字的表达式
pinyin += String.valueOf(chineseArra[i]).toLowerCase();
} else {//未识别字符的处理方式
log.warn("目标字符串:{} 含有解析不了内容:{}",chinese,String.valueOf(chineseArra[i]));
continue;
}
}
} else {
for (int i = 0; i < chineseArra.length; i++) {
if (String.valueOf(chineseArra[i]).matches("[\u4e00-\u9fa5]+")) {
pinyin += PinyinHelper.toHanyuPinyinStringArray(chineseArra[i], hypyFormat)[0];
}else if(String.valueOf(chineseArra[i]).matches("[a-zA-Z0-9]+")){
pinyin += String.valueOf(chineseArra[i]).toLowerCase();
} else {
log.warn("目标字符串:{} 含有解析不了内容:{}",chinese,String.valueOf(chineseArra[i]));
continue;
}
}
}
} catch (Exception e) {
log.error("Exception when using PinYinUtil # getPinYin", e);
return null;
}
return pinyin;
}
/**
* 获取汉字的大写首字母
*
* @param chinese 获取的目标字符串
* @return
*/
public static String getPinYinFirstLetterUpper(String chinese) {
return getPinYin(chinese, true, true);
}
/**
* 获取汉字的小写写首字母
*
* @param chinese 获取的目标字符串
* @return
*/
public static String getPinYinFirstLetterLoW(String chinese) {
return getPinYin(chinese, true, false);
}
}