汉字转拼音,汉字转拼音首字母~
下面的方法是在做项目的时候,从网上查了好久才得到的~虽然不是自己写的,但是也改的差不多了~放在这里供大家参考哈
http://download.youkuaiyun.com/detail/feihongmin/8090633是汉字转拼音要使用的pinyin4j的jar包,可以从官网上下载的
/**
* 汉字转换位全拼音,英文字符不变,其他符号忽略,*
* @param chines
* 汉字
* @return 小写全拼
*/
public static String getPingYin(String chines) {
StringBuilder sb = new StringBuilder();
char[] nameChar = chines.toCharArray();
for (int i = 0; i < nameChar.length; i++) {
String nameCharStr = java.lang.Character.toString(nameChar[i]);
if (nameCharStr.matches("[\\u4E00-\\u9FA5]+")) {
String pinyinStr = getCharacterPinYin(nameChar[i]);
if (pinyinStr != null) {
sb.append(pinyinStr);
}
} else if (nameCharStr.matches("^[a-zA-Z]*")) {
sb.append(nameCharStr.toLowerCase());
} else if (nameCharStr.matches("[0-9]*")) {
sb.append(nameCharStr);
}
}
return sb.toString();
}
public static String getCharacterPinYin(char c) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
String[] pinyin = null;
try {
pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
// 如果c不是汉字,toHanyuPinyinStringArray会返回null
if (pinyin == null)
return null;
// 只取一个发音,如果是多音字,仅取第一个发音
return pinyin[0];
}
/**
* 汉字转换位汉语拼音首字母,英文字符不变,其他符号忽略,
*
* @param chines
* 汉字
* @return 小写简拼
*/
public static String getShortPinyin(String chines) {
StringBuilder sb = new StringBuilder();
char[] nameChar = chines.toCharArray();
for (int i = 0; i < nameChar.length; i++) {
String nameCharStr = java.lang.Character.toString(nameChar[i]);
if (nameCharStr.matches("[\\u4E00-\\u9FA5]+")) {
String pinyinStr = getCharacterShortPinYin(nameChar[i]);
if (pinyinStr != null) {
sb.append(pinyinStr);
}
} else if (nameCharStr.matches("^[a-zA-Z]*")) {
sb.append(nameCharStr.toLowerCase());
} else if (nameCharStr.matches("[0-9]*")) {
sb.append(nameCharStr);
}
}
return sb.toString();
}
public static String getCharacterShortPinYin(char c) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
String[] pinyin = null;
try {
pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
if (pinyin == null)
return null;
// 只取一个发音,如果是多音字,仅取第一个发音的首字母
return java.lang.Character.toString(pinyin[0].charAt(0));
}