JPinyin拼音汉字、简体繁体转换工具
2022-03-17 本文已影响0人
AC编程
一、maven依赖
<dependency>
<groupId>com.github.stuxuhai</groupId>
<artifactId>jpinyin</artifactId>
<version>1.1.8</version>
</dependency>
二、github
https://github.com/qzw1210/jpinyin
三、封装JPinyin提供工具类
import cn.hutool.core.util.StrUtil;
import com.github.stuxuhai.jpinyin.ChineseHelper;
import com.github.stuxuhai.jpinyin.PinyinFormat;
import com.github.stuxuhai.jpinyin.PinyinHelper;
public class PinYinUtils {
/**
* 转换为每个汉字对应拼音首字母字符串
* @param pinYinStr 需转换的汉字
* @return 拼音字符串
*/
public static String getPinYinPrefix(String pinYinStr){
return getPinYinPrefix(pinYinStr, false);
}
/**
* 转换为每个汉字对应拼音首字母字符串
* @param pinYinStr 需转换的汉字
* @param uppercase true 大写,false 默认
* @return 拼音字符串
*/
public static String getPinYinPrefix(String pinYinStr, boolean uppercase){
if(StrUtil.isEmpty(pinYinStr)){
return pinYinStr;
}
try{
String tempStr = PinyinHelper.getShortPinyin(pinYinStr);
if(uppercase){
return tempStr.toUpperCase();
} else {
return tempStr;
}
} catch (Exception e){
e.printStackTrace();
return pinYinStr;
}
}
/**
* 获取汉字全品音
* @param pinYinStr 要转换的字符串
* @return 汉语拼音
*/
public static String getPinYin(String pinYinStr){
return getPinYin(pinYinStr, StrUtil.EMPTY, PinyinFormat.WITHOUT_TONE, false);
}
/**
* 获取汉字全品音
* @param pinYinStr 要转换的字符串
* @param uppercase true 大写,false 默认
* @return 汉语拼音
*/
public static String getPinYin(String pinYinStr, boolean uppercase){
return getPinYin(pinYinStr, StrUtil.EMPTY, PinyinFormat.WITHOUT_TONE, uppercase);
}
/**
* 获取汉字全品音
* @param pinYinStr 要转换的字符串
* @param separator 分隔符
* @param uppercase true 大写,false 默认
* @return 汉语拼音
*/
public static String getPinYin(String pinYinStr, String separator, boolean uppercase){
return getPinYin(pinYinStr, separator, PinyinFormat.WITHOUT_TONE, uppercase);
}
/**
* 获取汉字全品音
* @param pinYinStr 要转换的字符串
* @param separator 分隔符
* @param pinyinFormat 拼音格式 WITH_TONE_MARK(带声调),WITHOUT_TONE(不带声调) WITH_TONE_NUMBER(带声调数字)
* @param uppercase true 大写,false 默认
* @return 汉语拼音
*/
public static String getPinYin(String pinYinStr, String separator, PinyinFormat pinyinFormat, boolean uppercase){
if(StrUtil.isEmpty(pinYinStr)){
return pinYinStr;
}
try{
String tempStr = PinyinHelper.convertToPinyinString(pinYinStr, separator, pinyinFormat);
if(uppercase){
return tempStr.toUpperCase();
} else {
return tempStr;
}
} catch (Exception e){
e.printStackTrace();
return pinYinStr;
}
}
/**
* 判断一个汉字是否为多音字
* @param c 汉字
* @return 判断结果,是汉字返回true,否则返回false
*/
public static boolean hasMultiPinyin(char c){
return PinyinHelper.hasMultiPinyin(c);
}
/**
* 将单个汉字转换成带声调格式的拼音
* @param c 需要转换成拼音的汉字
* @return 字符串的拼音
*/
public static String[] convertToPinyinArray(char c){
return PinyinHelper.convertToPinyinArray(c);
}
/**
* 将单个汉字转换为相应格式的拼音
* @param c 需要转换成拼音的汉字
* @param pinyinFormat 拼音格式:WITH_TONE_NUMBER--数字代表声调,WITHOUT_TONE--不带声调,WITH_TONE_MARK--带声调
* @return 汉字的拼音
*/
public static String[] convertToPinyinArray(char c, PinyinFormat pinyinFormat){
return PinyinHelper.convertToPinyinArray(c, pinyinFormat);
}
/**
* 繁体字转为简体字
* @param wordStr 字符串
* @return 转换后的简体字符串
*/
public static String convertToSimplifiedChinese(String wordStr){
if(StrUtil.isEmpty(wordStr)){
return wordStr;
}
return ChineseHelper.convertToSimplifiedChinese(wordStr);
}
/**
* 简体字转换为繁体字
* @param wordStr 字符串
* @return 转换后的简体字符串
*/
public static String convertToTraditionalChinese(String wordStr){
if(StrUtil.isEmpty(wordStr)){
return wordStr;
}
return ChineseHelper.convertToTraditionalChinese(wordStr);
}
/**
* 判断word是否为简体中文
* @param word
* @return true 是,false 否
*/
public static boolean isChinese(char word){
return ChineseHelper.isChinese(word);
}
/**
* 判断word是否为繁体字
* @param word 字符
* @return true 是,false 否
*/
public static boolean isTraditionalChinese(char word){
return ChineseHelper.isTraditionalChinese(word);
}
/**
* 判断字符串是否包含中文
* @param wordStr 要判断的字符串
* @return true 包含,false 不包含
*/
public static boolean containsChinese(String wordStr){
if(StrUtil.isEmpty(wordStr)){
return false;
}
return ChineseHelper.containsChinese(wordStr);
}
public static void main(String[] args) {
System.out.println(PinYinUtils.convertToTraditionalChinese("生命不息,奋斗不止"));
}
}