java 中文转拼音

来源:互联网 发布:淘宝可以用话费支付吗 编辑:程序博客网 时间:2024/05/19 09:01

如果在后台代码中能够自动将中文课程名转换成拼音,那根本就不需要让用户来做这样一件事了,话说回来,这个功能,作为用户,也很不好理解自己为什么要做这个。而对开发者来说,也省去了那些异步调用、js那一行行的代码。对吧?

       我呢,老老实实的把上面一大串做完了。今天,在百度里输了一行“java汉字转换成拼音”,就这样,pinyin4j被我找到了……

       先看个小demo:需要pinyin4j.jar

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. /**  
  2.     * 获取汉字串拼音首字母,英文字符不变  
  3.     *  
  4.     * @param chinese 汉字串  
  5.     * @return 汉语拼音首字母  
  6.     */   
  7.    public static String cn2FirstSpell(String chinese) {   
  8.        StringBuffer pybf = new StringBuffer();   
  9.        char[] arr = chinese.toCharArray();   
  10.        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();   
  11.        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);   
  12.        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);   
  13.        for (int i = 0; i < arr.length; i++) {   
  14.                if (arr[i] > 128) {   
  15.                        try {   
  16.                                String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);   
  17.                                if (_t != null) {   
  18.                                        pybf.append(_t[0].charAt(0));   
  19.                                }   
  20.                        } catch (BadHanyuPinyinOutputFormatCombination e) {   
  21.                                e.printStackTrace();   
  22.                        }   
  23.                } else {   
  24.                        pybf.append(arr[i]);   
  25.                }   
  26.        }   
  27.        return pybf.toString().replaceAll("\\W""").trim().toUpperCase();   
  28.    }   
  29.    /**  
  30.     * 获取汉字串拼音,英文字符不变  
  31.     *  
  32.     * @param chinese 汉字串  
  33.     * @return 汉语拼音  
  34.     */  
  35.    public static String cn2Spell(String chinese) {   
  36.            StringBuffer pybf = new StringBuffer();   
  37.            char[] arr = chinese.toCharArray();   
  38.            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();   
  39.            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);   
  40.            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);   
  41.            for (int i = 0; i < arr.length; i++) {   
  42.                    if (arr[i] > 128) {   
  43.                            try {   
  44.                                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);   
  45.                            } catch (BadHanyuPinyinOutputFormatCombination e) {   
  46.                                    e.printStackTrace();   
  47.                            }   
  48.                    } else {   
  49.                            pybf.append(arr[i]);   
  50.                    }   
  51.            }   
  52.            return pybf.toString();   
  53.    }   
  54.    public static void main(String[] args)  
  55.    {  
  56.        String cnStr = "柳松";    
  57.        System.out.println(cn2FirstSpell(cnStr));    
  58.        System.out.println(cn2Spell(cnStr));  
  59.    }  

输出:


      Pinyin4j是sourceforge.net上的一个开源项目,功能也挺强大的,支持同一汉字有多个发音,支持大小写转换,支持拼音的格式化输出,比如第几声之类的,同时支持简体中文、繁体中文转换为拼音。官网:http://sourceforge.net/directory/os:windows/freshness:recently-updated/?q=pinyin4j

     jar包及api文档

       就是想说,我们在实现一个功能时,不要被固有的思维束缚,条条大路通罗马,只要我们多多思考,多加想象,总会理出更多思路的。

0 0
原创粉丝点击