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();
        }
    }
  • 相关阅读:
    死锁程序示例
    用Intellij打可执行jar包
    Semaphore tryAcquire release 正确的使用方法
    计算对象占用空间工具类
    mysql高效分页方案及原理
    乐视秒杀:每秒十万笔交易的数据架构解读
    mysql 联合索引(转)
    mysql中in和exists二者的区别和性能影响
    怎样避免 i f 判断过多,全复杂度较高,代码不美观的问题?
    Java中Enum类型的序列化(转)
  • 原文地址:https://www.cnblogs.com/xuhj/p/4224255.html
Copyright © 2011-2022 走看看