zoukankan      html  css  js  c++  java
  • pinyin4j 用法简介

    public class Chinese2PY {
    
        public static void main(String[] args) {
    
            Hanyu hanyu = new Hanyu();
            // 中英文混合的一段文字
            String str = "荆溪白石出,Hello: 天寒红叶稀。Android 山路元无雨,What's up?   空翠湿人衣。崂山";
            String strPinyin = hanyu.getStringPinYin(str);
            System.out.println(strPinyin);
    
            // String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray('单');
            // for (int i = 0; i < pinyinArray.length; ++i) {
            // System.out.println(pinyinArray[i]);
            // }
        }
    }
    
    class Hanyu {
        private HanyuPinyinOutputFormat format = null;
        private String[] pinyin;
    
        public Hanyu() {
            format = new HanyuPinyinOutputFormat();
            format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
            // format.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);
            pinyin = null;
        }
    
        // 转换单个字符
        public String getCharacterPinYin(char c) {
            try {
                pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                e.printStackTrace();
            }
            // 如果c不是汉字,toHanyuPinyinStringArray会返回null
            if (pinyin == null)
                return null;
            // 只取一个发音,如果是多音字,仅取第一个发音
            return pinyin[0];
        }
    
        // 转换一个字符串
        public String getStringPinYin(String str) {
            StringBuilder sb = new StringBuilder();
            String tempPinyin = null;
            for (int i = 0; i < str.length(); ++i) {
                tempPinyin = getCharacterPinYin(str.charAt(i));
                if (tempPinyin == null) {
                    // 如果str.charAt(i)非汉字,则保持原样
                    sb.append(str.charAt(i));
                } else {
                    sb.append(tempPinyin);
                }
            }
            return sb.toString();
        }
    }
  • 相关阅读:
    C++:显式和隐式初始化、显式和隐式类型转换
    [软件工程]Windows下SVN服务端的配置
    国外免费电子书下载网站辑(二)
    Ubuntu12.04下eclipse代码提示框模糊的解决办法
    [.NET] 坐标变换
    生成了libgsl.lib、libgslcblas.lib文件
    [C#]as 和 is 的区别
    xp安装.net4.0失败解决方法
    国外免费电子书下载网站辑(一)
    [转]不同网段共享打印机
  • 原文地址:https://www.cnblogs.com/xuhj/p/4224255.html
Copyright © 2011-2022 走看看