maven依赖:
https://mvnrepository.com/artifact/com.belerweb/pinyin4j
pinyin4J 是一个可以将汉字转换成拼音的lib,非常实用,在我们的日常开发过程中可能会用到,这里记录一下
@Slf4j
public class PinyinUtil {
/**
* 汉字转拼音
*
* @param chinese 对象
* @param type 类型:大写->HanyuPinyinCaseType.UPPERCASE 小写->HanyuPinyinCaseType.LOWERCASE
* @param split 连接符
* @return
*/
public static String hanYu2PinYin(String chinese, HanyuPinyinCaseType type, String split) {
char[] target = chinese.trim().toCharArray();
StringBuilder result = new StringBuilder();
for (char c : target) {
if (Pattern.matches(RegularConstants.CHINESE_CHAR, String.valueOf(c))) {
result.append(getPinYin(c, type)[0]).append(split);
} else {
result.append(c).append(split);
}
}
return result.toString();
}
/**
* 汉字转拼音并首字母大写
*
* @param chinese 对象
* @param split 连接符
* @return
*/
public static String hanYu2PinYinUpperCaseForFirst(String chinese, String split) {
char[] target = chinese.trim().toCharArray();
StringBuilder result = new StringBuilder();
for (char c : target) {
if (Pattern.matches(RegularConstants.CHINESE_CHAR, String.valueOf(c))) {
result.append(getPinYinUpperCaseForFirst(c)[0]).append(split);
} else {
result.append(c).append(split);
}
}
return result.toString();
}
private static String[] getPinYin(char chinese, HanyuPinyinCaseType type) {
HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
outputFormat.setCaseType(type);
outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
outputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
String[] result = null;
try {
result = PinyinHelper.toHanyuPinyinStringArray(chinese, outputFormat);
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
log.info("change target:{} to pinyin is error", chinese);
}
return result;
}
private static String[] getPinYinUpperCaseForFirst(char chinese) {
String[] result = getPinYin(chinese, HanyuPinyinCaseType.LOWERCASE);
if (null != result) {
String target = result[0];
result[0] = target.substring(0, 1).toUpperCase() + target.substring(1);
}
return result;
}
public static void main(String[] args) {
System.out.println(hanYu2PinYin("好", HanyuPinyinCaseType.LOWERCASE, " "));
System.out.println(hanYu2PinYin("会受到更好", HanyuPinyinCaseType.UPPERCASE, " "));
System.out.println(hanYu2PinYin("kkkkkk", HanyuPinyinCaseType.UPPERCASE, " "));
System.out.println(hanYu2PinYinUpperCaseForFirst("送将", ""));
}
}
版权声明:本文为hy_coming原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。