您的位置:首页 > 移动开发 > Android开发

android中将汉字转为拼音

2014-10-28 13:42 85 查看
汉字转拼音,汉字转拼音首字母~

下面的方法是在做项目的时候,从网上查了好久才得到的~虽然不是自己写的,但是也改的差不多了~放在这里供大家参考哈
http://download.csdn.net/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));

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: