一、前言
在对字符串进行字母排序的时候(例如通讯录列表),就会涉及到汉字转拼音。
二、转换方法
1.使用第三方jar包:pinyin4j-2.5.0.jar
2.转换具体实现类:
public class PinyinUtil {
/**
* 将传进来的包含中文的字串转成拼音
*
* @param str
* @return pinyin
*/
public static String getPinyin(String str) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 去掉读音
format.setCaseType(HanyuPinyinCaseType.UPPERCASE); // 输出大写字母
char[] charArray = string.toCharArray();
StringBuilder sb = new StringBuilder();
// 遍历字母串中的每一个字符
for (int i = 0; i < charArray.length; i++) {
char c = charArray[i]; // 指定位置字符
// 去掉空格,
if (Character.isWhitespace(c)) {
continue; // 跳过循环
}
if (isChinese(c)) {
// 可能是汉字
try {
// 转成拼音
String s = PinyinHelper.toHanyuPinyinStringArray(c, format)[0];
sb.append(s); // 拼接
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {// 不是汉字, 直接拼接
sb.append(c);
}
}
return sb.toString();
}
//判断当前字符是否是中文字符
private static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
||ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS ) {
return true;
}
return false;
}
}