zoukankan      html  css  js  c++  java
  • pinyin4j 中文转拼音

    pinyin4j的主页:http://pinyin4j.sourceforge.net/ 

    pinyin4j是一个支持将中文转换到拼音的Java开源类库。 

    A copy of http://sourceforge.net/projects/pinyin4j, then deploy it to maven central repository.

    <dependency>
        <groupId>com.belerweb</groupId>
        <artifactId>pinyin4j</artifactId>
        <version>2.5.1</version>
    </dependency>

    https://github.com/belerweb/pinyin4j

    基本用法:

    通常情况下,只需要用到其中的PinyinHelper类中的静态方法toHanyuPinyinStringArray就可以了,比如:

    String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray('单');
    for (String s : pinyinArray) {
        System.out.println(s);
        /*
         dan1
         chan2
         shan4
         */
    }

    格式支持

    Pinyin4j支持拼音输出的格式化

    HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
    format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
    format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
    String[] pinyinArray = null;
    try {
        pinyinArray = PinyinHelper.toHanyuPinyinStringArray('单', format);
    } catch (BadHanyuPinyinOutputFormatCombination e) {
        e.printStackTrace();
    }
    for (String s : pinyinArray) {
        System.out.println(s);
        /*
         dān
         chán
         shàn
         */
    }

    实际示例代码

    如果我们要将一段文字中的汉字全部转换成不带音调的拼音输出,而这段文字中又可能包含阿拉伯数字、英文、标点符号等等。如果完全靠自己写代码进行转换,那是非常麻烦的,其中一个首先就要区别,这段文字中那些是汉字,那些是非汉字。有了Pinyin4j,这个问题就不再困难了,因为对于非汉字,Pinyin4j会自动输出空数组。参考下面的示例代码:

    import net.sourceforge.pinyin4j.*;
    import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
    import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
    import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
    
    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);
        }
    }
    
    class Hanyu {
        private HanyuPinyinOutputFormat format = null;
        private String[] pinyin;
    
        public Hanyu() {
            format = new HanyuPinyinOutputFormat();
            format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            pinyin = null;
        }
    
        //转换单个字符
        public String getCharacterPinYin(char c) {
            try {
                pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                e.printStackTrace();
            }
    
            // 如果c不是汉字,toHanyuPinyinStringArray会返回空数组
            if (pinyin == null || pinyin.length == 0) 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();
        }
    }
  • 相关阅读:
    类似直播点赞动画(出现一颗心缓缓升起然后消失)
    进入App弹出提示框
    iOS NSString 截取字符串(根据索引截取)
    刷新tableView 保持头部视图 不变
    截取一段字符串中,两个指定字符串中间的字符串
    ios 导航栏透明, 上下滑动 导航栏 颜色渐变
    ios 自定义键盘的return键以及键盘的其他一些属性
    百度地图通过坐标定位 自己的位置显示小圆点 (精度圈是否显示根据自己喜好) 上图
    百度地图定位 (直接上图上代码)
    iOS 对H5加载html的数据的一些基础设置
  • 原文地址:https://www.cnblogs.com/ooo0/p/14818547.html
Copyright © 2011-2022 走看看