偶然间看到了pinyin4j,在网上搜到的都是同一个例子,所以跟着敲了下
1、首先下载pinyin4j的jar包,然后就可以开始使用了
package com.liuc.test;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
public class Ping4jTest {
//将汉字转化为全拼
public static String getPinyin(String src){
char toChar[]=src.toCharArray();
String[] toCharCp=new String[toChar.length];
HanyuPinyinOutputFormat hanyuFormat=new HanyuPinyinOutputFormat();
hanyuFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
hanyuFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
hanyuFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
String ret="";
int to=toChar.length;
try {
for(int i=0;i<to;i++){
//判断是否为汉字字符
if(java.lang.Character.toString(toChar[i]).matches("[\\u4E00-\\u9FA5]+")){
toCharCp=PinyinHelper.toHanyuPinyinStringArray(toChar[i], hanyuFormat);
ret+=toCharCp[0];
}else{
ret=java.lang.Character.toString(toChar[i]);
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
return ret;
}
//----------------------------------------返回中文的首字母--------------------
public static String getPinYinHeadChar(String str){
String convert="";
for (int i = 0; i < str.length(); i++) {
char word=str.charAt(i);
String[] pinYinArray=PinyinHelper.toHanyuPinyinStringArray(word);
if (pinYinArray!=null) {
convert+=pinYinArray[0].charAt(0);
}else {
convert+=word;
}
}
return convert;
}
//-------------------------将字符串转換为ASCII码-----------------------------
public static String getCnASCII(String cnStr){
StringBuffer strBuf=new StringBuffer();
byte[] bGBK=cnStr.getBytes();
for (int i = 0; i < bGBK.length; i++) {
strBuf.append(Integer.toHexString(bGBK[i]&0xff));
}
return strBuf.toString();
}
//--------------------------测试拼音转汉字是否正确----------------------------
public static void main(String[] args){
System.out.println(getPinyin("西安"));
//返回拼音的全拼样式
System.out.println(getPinYinHeadChar("西安"));
//返回拼音的首字母
System.out.println(getCnASCII("西安"));
//返回拼音的ASCII
System.out.println();
}
}