需要实现的是:
输入中文自动转换成 指定格式拼音
如:张三 自动转换成 san.zhang
具体实现如下:
(1)pom依赖添加如下
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
(2)代码如下
package com.xx.utils.http;
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;
public class NameEnUtils {
private static String getNameEn(String name) throws BadHanyuPinyinOutputFormatCombination {
char[] charArray = name.toCharArray();
StringBuilder pinyinlast = new StringBuilder();
StringBuilder pinyin = new StringBuilder();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
//设置大小写格式
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
boolean flag = true;
for (int i = 0; i < charArray.length; i++) {
String str = Character.toString(charArray[i]);
//匹配中文,非中文转换会转换成null
if (str.matches("[\\u4E00-\\u9FA5]+")) {
String[] hanyuPinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(charArray[i],defaultFormat);
if(flag){
char[] chars = hanyuPinyinStringArray[0].toCharArray();
StringBuilder temp = new StringBuilder();
pinyinlast.append(".");
pinyinlast.append(chars);
pinyin.append(temp);
flag = false;
}else{
String pin = hanyuPinyinStringArray[0];
pinyin.append(pin);
}
} else {
pinyin.append(charArray[i]);
}
}
pinyin=pinyin.append(pinyinlast);
return pinyin.toString();
}
public static void main(String[] args) throws Exception {
String enname=getNameEn("张三");
System.out.println(enname);
}
}
运行结果如下: