java将中文转为拼音
项目需求,需要将一批工号批量入库,但产品经理提供的却是中文……没办法,只好用程序转了。
做法是将人名保存为文本文件,每行一个。并且采用pinyin4j包进行转换,值得提的是pinyin4j对多音字特别是姓氏转换不是特别准确,因此遇到多音字姓氏就需要自行判断并转换了。再者,由于同名的原因,为了区分姓名中还参杂着阿拉伯数字,因此在判断时还要加以区分。
// 中文转拼音
Maple
// An highlighted block
/*
程序目的:将中文转换为拼音
程序版本:JDK13
程序编写:枫叶
编写时间:2020年3月2日
*/
package org.translation;
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 ChineseToPinYin
{
public static String PROVINCE = "GuangXi";
//接收外部传进的参数方法
public String getChineseWord(String words)
{
String tranWord = translateToPinYin(words);
return tranWord;
}
//中文转换为拼音
private String translateToPinYin(String words)
{
String pinYin = "";
String name = "";
//中文转换成拼音
char[] singleWord = words.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
int flag = 0;
String regex = "[\u4E00-\u9FA5]+"; //定义中文字符的unicode范围
for(int i=0;i<singleWord.length;i++)
{
判断是否为中文字符
if(!String.valueOf(singleWord[i]).matches(regex))
{
pinYin += singleWord[i];
}
else
{
try {
flag++;
// System.out.println("flag:"+flag);
if ((String.