android 城市多音字处理,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;

/**

* @Description:

* @Date: 2021/4/27 16:26

* @Author: luch

* @Version: 1.0

**/

public class ChangeToPinYinJPinYin {

/**

* 转换为有声调的拼音字符串

*

* @param pinYinStr 汉字

* @return 有声调的拼音字符串

*/

public static String changeToMarkPinYin(String pinYinStr) {

String tempStr = null;

try {

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

} catch (Exception e) {

e.printStackTrace();

}

return tempStr;

}

/**

* 转换为数字声调字符串

*

* @param pinYinStr 需转换的汉字

* @return 转换完成的拼音字符串

*/

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;

}

/**

* 转换为不带音调的拼音字符串

*

* @param pinYinStr 需转换的汉字

* @return 拼音字符串

*/

public static String changeToTonePinYin(String pinYinStr) {

String tempStr = null;

try {

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

} catch (Exception e) {

e.printStackTrace();

}

return tempStr;

}

/**

* 转换为每个汉字对应拼音首字母字符串

*

* @param pinYinStr 需转换的汉字

* @return 拼音字符串

*/

public static String changeToGetShortPinYin(String pinYinStr) {

String tempStr = null;

try {

tempStr = PinyinHelper.getShortPinyin(pinYinStr);

} catch (Exception e) {

e.printStackTrace();

}

return tempStr;

}

/**

* 检查汉字是否为多音字

*

* @param pinYinStr 需检查的汉字

* @return true 多音字,false 不是多音字

*/

public static boolean checkPinYin(char pinYinStr) {

boolean check = false;

try {

check = PinyinHelper.hasMultiPinyin(pinYinStr);

} catch (Exception e) {

e.printStackTrace();

}

return check;

}

/**

* 简体转换为繁体

*

* @param pinYinStr

* @return

*/

public static String changeToTraditional(String pinYinStr) {

String tempStr = null;

try {

tempStr = ChineseHelper.convertToTraditionalChinese(pinYinStr);

} catch (Exception e) {

e.printStackTrace();

}

return tempStr;

}

/**

* 繁体转换为简体

*

* @param pinYinSt

* @return

*/

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('鼠'));

}

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

b851c8c8afe7902d3059dfdafa48593e.png

五、源码分析

5.1 字典对应信息

分别是:从上到下分别是

1.繁体-简体对应表

2.多音字

3.带音标的拼音

7a0fcc1dbe9e711b381a4a4b1cfbd94f.png

5.2 6个处理类

c1b4c4bac4e6dff6c500563f5002c353.png

5.3 处理模式

点开

com.github.stuxuhai.jpinyin.PinyinResource#getPinyinResource

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

71c44077688c8eaef83fa263f639d932.png

然后通过

com.github.stuxuhai.jpinyin.ChineseHelper

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

d5ef6b22850beed0da1ebb89818580a9.png

到此这篇关于Java实战之城市多音字处理的文章就介绍到这了,更多相关java城市多音字处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值