利用Java开源库把汉字转拼音(推荐OK)_爱题巴.爱技术.小川哥_百度空间

利用Java开源库把汉字转拼音(推荐OK)_爱题巴.爱技术.小川哥_百度空间

利用Java开源库把汉字转拼音(推荐OK)
2009年07月22日 19:05

最近做的项目,因为下拉框中的项目太多,需要有个过滤的方法。我想的是键入汉语拼音首字母即时过滤下拉内容。

在网上找了好一会,发现了有个专门用来将中文转换成汉语拼音的Java的开源库,Pinyin4j,

下载地址:pinyin4j-2.5.0.zip

基本用法,如下示例

Java代码
  1. /**
  2. * 汉字转换位汉语拼音,英文字符不变
  3. * @author xuke
  4. *
  5. */  
  6. public class Cn2Spell {   
  7.   
  8.     /**
  9.      * 汉字转换位汉语拼音首字母,英文字符不变
  10.      * @param chines 汉字
  11.      * @return 拼音
  12.      */  
  13.     public static String converterToFirstSpell(String chines){          
  14.          String pinyinName = "";   
  15.         char[] nameChar = chines.toCharArray();   
  16.          HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();   
  17.          defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);   
  18.          defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);   
  19.         for (int i = 0; i < nameChar.length; i++) {   
  20.             if (nameChar[i] > 128) {   
  21.                 try {   
  22.                      pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0);   
  23.                  } catch (BadHanyuPinyinOutputFormatCombination e) {   
  24.                      e.printStackTrace();   
  25.                  }   
  26.              }else{   
  27.                  pinyinName += nameChar[i];   
  28.              }   
  29.          }   
  30.         return pinyinName;   
  31.      }   
  32.   
  33.     /**
  34.      * 汉字转换位汉语拼音,英文字符不变
  35.      * @param chines 汉字
  36.      * @return 拼音
  37.      */  
  38.     public static String converterToSpell(String chines){           
  39.          String pinyinName = "";   
  40.         char[] nameChar = chines.toCharArray();   
  41.          HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();   
  42.          defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);   
  43.          defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);   
  44.         for (int i = 0; i < nameChar.length; i++) {   
  45.             if (nameChar[i] > 128) {   
  46.                 try {   
  47.                      pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0];   
  48.                  } catch (BadHanyuPinyinOutputFormatCombination e) {   
  49.                      e.printStackTrace();   
  50.                  }   
  51.              }else{   
  52.                  pinyinName += nameChar[i];   
  53.              }   
  54.          }   
  55.         return pinyinName;   
  56.      }   
  57.        
  58.     public static void main(String[] args) {   
  59.          System.out.println(converterToFirstSpell("欢迎来到最棒的Java中文社区"));   
  60.      }   
  61. }  

以上一个是完全转换成汉语拼音的,另一个是只转换首字母的,遇到ASCII字符都不转换,保留。

原文地址:https://www.cnblogs.com/lexus/p/2420667.html