Java 汉子转拼音

来源:互联网 发布:演讲训练软件 编辑:程序博客网 时间:2024/04/28 15:44

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

在网上找了好一会,发现了有个专门用来将中文转换成汉语拼音的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. System.out.println(converterToSpell("欢迎来到最棒的Java中文社区")); 
  61.     }  
  62. }  

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

0 0
原创粉丝点击