Java实战之城市多音字处理

Java实战之城市多音字处理

一、需求

对城市名称转化为拼音的时候,当遇到多音字城市的时候,转化拼音就不是我们想要的了。

使用? pinyin4j 无法直接解决这个问题。 。网上有很多维护多音字信息的,觉得麻烦。

如:

长沙====>“zhangsha”

厦门===>“shamen”

重庆===>“zhongqing”

二、导入 jpinyin

版本自选

com.github.stuxuhai

jpinyin

1.1.8

三、直接创建工具类(不需要其他操作)

import com.github.stuxuhai.jpinyin.ChineseHelper;

import com.github.stuxuhai.jpinyin.PinyinFormat;

import com.github.stuxuhai.jpinyin.PinyinHelper;

public class ChangeToPinYinJPinYin {

public static String changeToMarkPinYin(String pinYinStr) {

WdjJd String tempStr=null;

    try {

        tempStr=PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_MARK);



    } catch (Exception e) {

        e.printStackTrace();

    }

    return tempStr;



}







public static String changeToNumberPinYin(String pinYinStr) {



    String tempStr=null;



    try {

        tempStr=PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_NUMBER);

    } catch (Exception e) {

        e.printStackTrace();

    }



    return tempStr;



}





public static String changeToTonePinYin(String pinYinStr) {



    String tempStr=null;



    try {

   http://     tempStr=PinyinHelper.convertToPinyinString(pinYinStr, "", PinyinFormat.WITHOUT_TONE);

    } catch (Exception e) {

        e.printStackTrace();

    }

    return tempStr;



}





public static String changeToGetShortPinYin(String pinYinStr) {



    String tempStr=null;



    try {

        tempStr=PinyinHelper.getShortPinyin(pinYinStr);

    } catch (Exception e) {

        e.printStackTrace();

    }

    return tempStr;



}





public static boolean checkPinYin(char pinYinStr) {



    boolean check=false;

    try {

        check=PinyinHelper.hasMultiPinyin(pinYinStr);

    } catch (Exception e) {

        e.printStackTrace();

    }

    return check;

}





public static String changeToTraditional(String pinYinStr) {



    String tempStr=null;

    try {

        tempStr=ChineseHelper.convertToTraditionalChinese(pinYinStr);

    } catch (Exception e) {

        e.printStackTrace();

    }

    return tempStr;



}





public static String changeToSimplified(String pinYinSt) {



    String tempStr=null;



    try {

        tempStr=ChineseHelper.convertToSimplifiedChinese(pinYinSt);

    } catch (Exception e) {

        e.printStackTrace();

    }



    return tempStr;



}

}

四、直接测试代码

public static void main(String[] args) {

    String str="长沙市";

    System.out.println("转换为有声调的拼音字符串:"+changeToMarkPinYin(str));

    System.out.println("转换为不带音调的拼音字符串:"+changeToTonePinYin(str));



    String strFanTi="誰是程序員";

    System.out.println("繁体转换为简体:"+changeToSimplified(strFanTi));

    System.out.println("重"+"重是否是多音字:"+checkPinYin('重'));

    System.out.println("厦"+"是否是多音字:"+checkPinYin('厦'));

    System.out.println("鼠"+"是否是多音字:"+checkPinYin('鼠'));

}

输出结果,下面不同字的中间是否有空格,这个可以自己设置的

五、源码分析

5.1 字典对应信息

分别是:从上到下分别是

1.繁体-简体对应表

2.多音字

3.带音标的拼音

5.2 6个处理类

5.3 处理模式

点开

com.github.stuxuhai.jpinyin.PinyinResource#getPinyinResource

有三个方法分别加载了这几个资源

然后通过

com.github.stuxuhai.jpinyin.ChineseHelper

通过一个键值对获取。加载处理而已。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值