封装一个获取汉字拼音的小工具,获取汉字拼音、首字母、多个汉字的首字母
前言
其实我们对汉字转拼音的需求还是挺多的,每家公司的场景都不同,例如省市区数据,我们需要根据首字母进行排序,那首先需要获取到首字母才能排序吧,或者我们在做录入人员信息的时候,自动获取名字的拼音等等吧,上述需求我也遇到过,所以封装了下,算是给后面碰到这种需求的伙伴提供一个现成的工具,前人种树,后人乘凉。
引入依赖
当然,我也是通过pinyin4j来实现的,所以最底层的还是人家来做的,lang3包判断
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
封装代码
package cn.lwh.common.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.apache.commons.lang3.StringUtils;
/**
* @author lwh
* @date 2024/11/13
* @description 拼音处理
**/
public class PinYinUtils {
public static void main(String[] args) {
String firstStr = getFirstStr("商水");
System.out.println(firstStr);
}
/**
* @author lwh
* @date 2024/11/13
* @description 获取首字母,宁夏回族自治区=N,获取到N。传入:宁夏回族自治区,输出:N
**/
public static String getFirstStr(String name) {
if (StringUtils.isNotBlank(name)) {
String characters = String.valueOf(name.charAt(0));
if (characters.matches("[\\u4e00-\\u9fa5]")) {
return String.valueOf(converterToFirstSpell(characters).toUpperCase().charAt(0));
}
}
// name为空或者首位字符不是汉字,都返回空字符串
return "";
}
/**
* @author lwh
* @date 2024/11/13
* @description 北京=beijing=BJ,最终得到BJ。传入:北京,输出:BJ
**/
public static String getUpperStr(String name) {
if (StringUtils.isNotBlank(name)) {
StringBuilder str = new StringBuilder();
for (int i = 0; i < name.length(); i++) {
String characters = String.valueOf(name.charAt(i));
str.append(converterToFirstSpell(characters).toUpperCase().charAt(0));
}
return str.toString();
}
return "";
}
/**
* @author lwh
* @date 2024/11/13
* @description 传入:商水 输出:shangshui
**/
public static String converterToFirstSpell(String str) {
StringBuilder pinyinName = new StringBuilder();
char[] nameChar = str.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (char characters : nameChar) {
String string = String.valueOf(characters);
if (string.matches("[\\u4e00-\\u9fa5]")) {
try {
String[] mPinyinArray = PinyinHelper.toHanyuPinyinStringArray(characters, defaultFormat);
pinyinName.append(mPinyinArray[0]);
} catch (BadHanyuPinyinOutputFormatCombination e) {
throw new RuntimeException("拼音转换异常");
}
} else {
pinyinName.append(characters);
}
}
return pinyinName.toString();
}
}
原文地址:https://blog.csdn.net/l848168/article/details/143741274
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!