Java从汉字到拼音--pinyin4j使用

有时候,我们需要将汉字转化成拼音,以方便查询,如图书系统中用拼音检索书籍,以及通讯录中快速查找联系人等。一个方法是使用Map容器对,将汉字与拼音对应,如“中”对应“zhong”。但由于Map的自身限制,在多音字如“重”可对应“chong”、“zhong”,这时候就会出现问题。

Pinyin4j就是为了解决类似这样的问题的。它是sourceforge.net上的一个开源项目,功能非常强大。

Pinyin4j的实例:

public static String converterToFirstSpell(String chinese) {
    String pinyinName = "";
    char[] nameChar = chinese.toCharArray();
    HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
    defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
    defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);  
    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;
}

先将string转换成char[],再统一将所有字符进行转换

转换方式为:
1. 字母大小写设置
. setCaseType(HanyuPinyinCaseType.LOWERCASE) 将拼音以小写字母输出
(上海 –>shanghai)

.setCaseType(HanyuPinyinCaseType.UPPERCASE) 将拼音以大写字母输出
(上海 –>SHANGHAI)

2.拼音音调设置
. setToneType(HanyuPinyinToneType.WITHOUT_TONE) 无音调显示
( 刘–>liu)

.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER)用数字表示声调
( 刘–>liu4)

. setToneType(HanyuPinyinToneType.WITH_TONE_MARK) 用声调符表示
( 刘–> liú )

3.多音字输出(仅在存在多音字情况下)
例如:“重”可输出为
.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0] –>zhong
.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[1] –>chong

4.特殊拼音输出格式
例如:“绿”可输出为
.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON) –> lu:
.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE) –>lü
.setVCharType(HanyuPinyinVCharType.WITH_V) –> lv

5.拼音特定位
例如:“重”可输出为
.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0) –>z
.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(1) –>h
.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(2) –>o

jar包下载 http://download.csdn.net/detail/wyky481l/9809877

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值