读书人

java中将汉字变换为拼音

发布时间: 2012-11-01 11:11:32 作者: rapoo

java中将汉字转换为拼音

?? ?因为项目中制作lic的时候,出现了中文的产品名,导致产品无法导入lic文件,搜了一圈,感觉使用pinyin4j这个开源的java库比较方便,而且很全,如下是具体的例子,pinyin4j使用的是最新的库pinyin4j-2.5.0.jar,其源码见附件

?

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 pinyin { //将汉字转换为全拼  public static String getPingYin(String src){     char[] t1 = null;      t1=src.toCharArray();      String[] t2 = new String[t1.length];      HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();      t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);      t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);      t3.setVCharType(HanyuPinyinVCharType.WITH_V);      String t4="";      int t0=t1.length;      try {        for (int i=0;i<t0;i++)        {        //判断是否为汉字字符           if(java.lang.Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+"))                   {                t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);                              t4+=t2[0];                }            else                t4+=java.lang.Character.toString(t1[i]);        } //        System.out.println(t4);        return t4;      }      catch (BadHanyuPinyinOutputFormatCombination e1) {        e1.printStackTrace();      }      return t4;  }  //返回中文的首字母  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;  }  //将字符串转移为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();  }  public static void main(String[] args) { String cnStr = "我爱你";  System.out.println(getPingYin(cnStr));  System.out.println(getPinYinHeadChar(cnStr));  }}
?

?

读书人网 >编程

热点推荐