最近在項目中有需求將漢字轉拼音,找到了相關資料,整理如下
以下用到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();
}