中文转换拼音工具类,使用pinyin4j库
一、依赖如下:
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
二、工具类代码:
package com.ruoyi.system.utils;
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;
import org.springframework.stereotype.Component;
/**
* 中文转换拼音工具类
*/
@Component
public class PinyinUtil {
/**
* 获取中文全拼
*
* @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.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].charAt(0));
}
} else {
result.append(c);
}
}
return result.toString();
}
public static void main(String[] args) {
String name = "刘德华"; // 输入的中文姓名
String pinyin = getFullPinyin(name);
System.out.println("姓名:" + name + " 的拼音为:" + pinyin);
}
}
标签:pinyinArray,outputFormat,拼音,pinyin4j,中文,String,result,name
From: https://www.cnblogs.com/xiaoguo-java/p/18670730