现在的位置: 首页 > 综合 > 正文

一个汉字转拼音的插件(pinyin4j)

2018年01月30日 ⁄ 综合 ⁄ 共 1701字 ⁄ 字号 评论关闭

今天看到一个拼音插件,输入汉字后会自动转换为拼音或者每个字的首字母,在做有些项目开发时也有点用

  pinyin4j提供了汉语转拼音的一个开源库, 支持多种拼音系统:汉语拼音、 通用拼音 、威氏拼音、注音二式、雅礼、 
国语罗马字。

  但是遗憾的是不支持多音字

  首先下载jar包:http://pinyin4j.sourceforge.net/

 

public class PingyinUtils { 
      
    /**    
     * 汉字转换为汉语拼音首字母,英文字符不变    
     * @param chines 汉字    
     * @return 拼音 
     */      
    public static String converterToFirstSpell(String chines){               
         String pinyinName = "";    
           
         //转化为字符 
         char[] nameChar = chines.toCharArray(); 
//         for(int i=0;i<nameChar.length;i++){ 
//           System.out.println(nameChar[i]); 
//         } 
           
         //汉语拼音格式输出类    
         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); 
           
         //输出设置,大小写,音标方式等    
         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);        
         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);        
           
         for (int i = 0; i < nameChar.length; i++) {        
             //如果是中文 
             if (nameChar[i] > 128) { 
                try {        
                     pinyinName +=  
                           PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0);        
                 } catch (BadHanyuPinyinOutputFormatCombination e) {        
                     e.printStackTrace();        
                 }        
             }else{//为英文字符     
                 pinyinName += nameChar[i];        
             }        
         }        
        return pinyinName;        
     }        
          
    /**    
     * 汉字转换位汉语拼音,英文字符不变    
     * @param chines 汉字    
     * @return 拼音    
     */      
    public static String converterToSpell(String chines){                
        String pinyinName = "";        
        char[] nameChar = chines.toCharArray();        
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();        
        defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);        
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);        
        for (int i = 0; i < nameChar.length; i++) {        
            if (nameChar[i] > 128) {        
                try {        
                     pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0];        
                 } catch (BadHanyuPinyinOutputFormatCombination e) {        
                     e.printStackTrace();        
                 }        
             }else{        
                 pinyinName += nameChar[i];        
             }        
         }        
        return pinyinName;        
     }        
             
    public static void main(String[] args) {        
         System.out.println(converterToFirstSpell("长城有限公司")); 
          
        System.out.println(converterToSpell("康师傅").toLowerCase()); 
     }        
}

 

代码运行结果:

 

  zcyxgs    //  长转换成了z

  kangshifu

 

抱歉!评论已关闭.