最近在项目中有需求将汉字转拼音,找到了相关资料,整理如下
以下用到pinyin4j.jar包,官方下载地址:http://sourceforge.net/projects/pinyin4j/files/?source=navbar
/*
* @1 版本说明: 2013-07-27 pj add
*
* @2 函数说明:返回字符串的全拼
*/
public static String getPingYin(String s) {
//1. 将字符串拆成char数组
char[] s1 = s.toCharArray();
String[] s2 = new String[s1.length];
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
//1. 设置格式化为大写
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
/*
HanyuPinyinToneType.WITH_TONE_NUMBER 用数字表示声调,例如:liu2
HanyuPinyinToneType.WITHOUT_TONE 无声调表示,例如:liu
HanyuPinyinToneType.WITH_TONE_MARK 用声调符号表示,例如:liú
*/
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
/*
设置特殊拼音ü的显示格式:
HanyuPinyinVCharType.WITH_U_AND_COLON 以U和一个冒号表示该拼音,例如:lu:
HanyuPinyinVCharType.WITH_V 以V表示该字符,例如:lv
HanyuPinyinVCharType.WITH_U_UNICODE 以ü表示
*/
format.setVCharType(HanyuPinyinVCharType.WITH_V);
String s4 = "";
int s0 = s1.length;
try {
for (int i = 0; i < s0; i++) {
// 判断是否为汉字字符
if (java.lang.Character.toString(s1[i]).matches(
"[\\u4E00-\\u9FA5]+")) {
s2 = PinyinHelper.toHanyuPinyinStringArray(s1[i], format);
s4 += s2[0];
} else {
s4 += java.lang.Character.toString(s1[i]);
}
}
return s4;
} catch (BadHanyuPinyinOutputFormatCombination e1) {
e1.printStackTrace();
}
return s4;
}
/*
*@1 版本说明:2013-07-27 pj add
*
*@2 函数说明:返回字符串的简拼
*/
public static String getPinYinHeadChar(String str) {
String convert = "";
for (int j = 0; j < str.length(); j++) {
char word = str.charAt(j);
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
if (pinyinArray != null) {
convert += pinyinArray[0].charAt(0);
} else {
convert += word;
}
}
return convert;
}
/*
* @1 版本信息: 2013-7-27 pj add
*
* @2 函数说明: 将字符串转移为ASCII码
*/
public static String getCnASCII(String cnStr) {
StringBuffer strBuf = new StringBuffer();
byte[] bGBK = cnStr.getBytes();
for (int i = 0; i < bGBK.length; i++) {
// System.out.println(Integer.toHexString(bGBK[i]&0xff));
strBuf.append(Integer.toHexString(bGBK[i] & 0xff));
}
return strBuf.toString();
}