import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
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;
/**
* 拼音工具类
*
* @author: develp
* @version: 2.3
*/
public class PinYinUtils {
/**
* 汉字转换位汉语拼音首字母,英文字符不变,特殊字符丢失 支持多音字,生成方式如(重当参:cdc,zds,cds,zdc)
*
* @param chines
* 汉字
* @return 拼音
*/
private static final int ASCII_SPLIT_NUM = 128;
public static String converterToFirstSpellString chines) {
StringBuffer pinyinName = new StringBuffer);
char[] nameChar = chines.toCharArray);
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat);
defaultFormat.setCaseTypeHanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneTypeHanyuPinyinToneType.WITHOUT_TONE);
for int i = 0; i < nameChar.length; i++) {
if nameChar[i] > ASCII_SPLIT_NUM) {
try {
String[] strs = PinyinHelper.toHanyuPinyinStringArray
nameChar[i], defaultFormat);
if strs != null) {
for int j = 0; j < strs.length; j++) {
pinyinName.appendstrs[j].charAt0));
if j != strs.length – 1) {
pinyinName.append”,”);
}
}
}
} catch BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace);
}
} else {
pinyinName.appendnameChar[i]);
}
pinyinName.append” “);
}
return parseTheChineseByObjectdiscountTheChinesepinyinName.toString)));
}
/**
* 去除多音字重复数据
*
* @param theStr
* @return
*/
private static List<Map<String, Integer>> discountTheChineseString theStr) {
List<Map<String, Integer>> mapList = new ArrayList<Map<String, Integer>>);
Map<String, Integer> onlyOne = null;
String[] firsts = theStr.split” “);
for String str : firsts) {
onlyOne = new Hashtable<String, Integer>);
String[] china = str.split”,”);
for String s : china) {
Integer count = onlyOne.gets);
if count == null) {
onlyOne.puts, new Integer1));
} else {
onlyOne.removes);
count++;
onlyOne.puts, count);
}
}
mapList.addonlyOne);
}
return mapList;
}
/**
* 解析并组合拼音,对象合并方案推荐使用)
*
* @return
*/
private static String parseTheChineseByObject
List<Map<String, Integer>> list) {
Map<String, Integer> first = null;
for int i = 0; i < list.size); i++) {
Map<String, Integer> temp = new Hashtable<String, Integer>);
if first != null) {
for String s : first.keySet)) {
for String s1 : list.geti).keySet)) {
String str = s + s1;
temp.putstr, 1);
}
}
if temp != null && temp.size) > 0) {
first.clear);
}
} else {
for String s : list.geti).keySet)) {
String str = s;
temp.putstr, 1);
}
}
if temp != null && temp.size) > 0) {
first = temp;
}
}
String returnStr = “”;
if first != null) {
for String str : first.keySet)) {
returnStr += str + “,”);
}
}
if returnStr.length) > 0) {
returnStr = returnStr.substring0, returnStr.length) – 1);
}
return returnStr;
}
}
/pinyin4j-2.5.0.jar
******未经允许,禁止转载 否则追究法律责任******