java 漢字轉拼音

 

最近在項目中有需求將漢字轉拼音,找到了相關資料,整理如下

 以下用到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();
 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章