java 汉字转拼音

public class SpellUtils{

public static String getSpell(String c){
char[] chars = c.toCharArray();
StringBuffer sb = new StringBuffer("");
for(int i=0;i<chars.length;i++){
sb.append(getSpell(chars[i]));
}
return sb.toString();
}

public static String getFirstSpell(String c){
char[] chars = c.toCharArray();
StringBuffer sb = new StringBuffer("");
if(StringUtils.isNotBlank(c)){
sb.append(getSpell(chars[0]));
}
return sb.toString();
}

public static String getAllSpell(String c){
// 创建汉语拼音处理类
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
// 输出设置,大小写,音标方式
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

String pinyingStr = "";
try {
pinyingStr = PinyinHelper.toHanyuPinyinString(c, defaultFormat,"");
} catch (BadHanyuPinyinOutputFormatCombination e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return pinyingStr;
}

private static String getSpell(char c) {
int b = (int) c;
if (b >= 48 && b <= 57)
return String.valueOf(c);
if (b >= 65 && b <= 90)
return String.valueOf(c);
if (b >= 97 && b <= 122)
return String.valueOf(c);

byte[] array = new byte[2];
try {
array = String.valueOf(c).getBytes("gbk");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (array.length < 2)
return String.valueOf(c);
int i = (short) (array[0] - '\0' + 256) * 256
+ ((short) (array[1] - '\0' + 256));
if (i < 0xB0A1)
return "";// String.valueOf(c);
if (i < 0xB0C5)
return "a";
if (i < 0xB2C1)
return "b";
if (i < 0xB4EE)
return "c";
if (i < 0xB6EA)
return "d";
if (i < 0xB7A2)
return "e";
if (i < 0xB8C1)
return "f";
if (i < 0xB9FE)
return "g";
if (i < 0xBBF7)
return "h";
if (i < 0xBFA6)
return "j";
if (i < 0xC0AC)
return "k";
if (i < 0xC2E8)
return "l";
if (i < 0xC4C3)
return "m";
if (i < 0xC5B6)
return "n";
if (i < 0xC5BE)
return "o";
if (i < 0xC6DA)
return "p";
if (i < 0xC8BB)
return "q";
if (i < 0xC8F6)
return "r";
if (i < 0xCBFA)
return "s";
if (i < 0xCDDA)
return "t";
if (i < 0xCEF4)
return "w";
if (i < 0xD1B9)
return "x";
if (i < 0xD4D1)
return "y";
if (i < 0xD7FA)
return "z";
return String.valueOf(c);
}
 
public static void main(String[] args) {
String s = "中国人2";
System.out.println(getFirstSpell(s));
System.out.println(getSpell(s));
System.out.println(getAllSpell(s));
}

}

输出
z
zgr2
zhongguoren2

猜你喜欢

转载自cuityang.iteye.com/blog/2305539