利用Java开源库把汉字转拼音

来源:互联网 发布:三国志3优化版1.76 编辑:程序博客网 时间:2024/06/05 16:08

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

在网上找了好一会,发现了有个专门用来将中文转换成汉语拼音的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. }  
0 0
原创粉丝点击