一、需求

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

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

}

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

五、源码分析

5.1 字典对应信息

分别是:从上到下分别是

1.繁体-简体对应表

2.多音字

3.带音标的拼音

5.2 6个处理类

5.3 处理模式

点开

com.github.stuxuhai.jpinyin.PinyinResource#getPinyinResource

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

然后通过

com.github.stuxuhai.jpinyin.ChineseHelper

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

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

android 城市多音字处理,Java实战之城市多音字处理相关推荐

  1. Java实战之城市多音字处理

    Java实战之城市多音字处理 一.需求 对城市名称转化为拼音的时候,当遇到多音字城市的时候,转化拼音就不是我们想要的了. 使用? pinyin4j 无法直接解决这个问题. .网上有很多维护多音字信息的 ...

  2. Android 省份城市搜索,Android 实现省份城市的选择,并获取城市编号

    该程序主要使用 中央气象局 省份 城市数据库为基础 进行读取 下载的数据库 db_weather.db 放到sdcard/weather 目录下面 方便后续操作 为了更好的了解数据库,使用 SQLit ...

  3. JAVA计算机毕业设计城市公交查询系统Mybatis+系统+数据库+调试部署

    JAVA计算机毕业设计城市公交查询系统Mybatis+系统+数据库+调试部署 JAVA计算机毕业设计城市公交查询系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

  4. Android JNI学习(六)——Java与Native实战演习

    前言: 前几篇我主要介绍了jni先关的基础知识和常用API,相信看过的童靴对JNI已经有了一定的了解,如果不了解也没关系,下面我给出了链接,可以点进去学习.接下来我将实战一个完整案例,案例很简单,就是 ...

  5. Java毕设项目城市公交系统计算机(附源码+系统+数据库+LW)

    Java毕设项目城市公交系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ecli ...

  6. JAVA毕业设计淮安城市开放大学实习实训管理系统计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计淮安城市开放大学实习实训管理系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计淮安城市开放大学实习实训管理系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈 ...

  7. Java毕设项目城市智能公交系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目城市智能公交系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Web ...

  8. 中国城市人口分布区域分析实战!

    今天给大家分享一波PowerBI分析实战~ PowerBI最大的功能就是可以创建交互式图表,同时PowerBI具备数据清洗.数据建模.数据可视化的功能,使用PowerBI软件可以极大的方便我们数据分析 ...

  9. 计算机毕业设计Java宁夏中卫城市风采在线系统开发(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java宁夏中卫城市风采在线系统开发(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java宁夏中卫城市风采在线系统开发(源码+系统+mysql数据库+lw文档) 本源码技术栈 ...

最新文章

  1. 2020年,那些「引爆」了机器学习社区的热门论文、库和基准
  2. Python 基础语法(三)
  3. PDH光端机的主要作用以及特点有哪些?
  4. pluswell双机软件基本概述
  5. 加载八叉树索引文件_mysql innodb索引原理
  6. RHCE认证考试时间是什么时候?
  7. 《计算机网络》_考研复试_概念面试篇
  8. CMD命令关闭指定PID进程
  9. 基于S3c2440的多种显示屏测试方案
  10. 论文笔记:SAIN: Self-Attentive Integration Network for Recommendation(SIGIR 2019)
  11. gamma分布python代码_python scipy stats.gamma用法及代码示例
  12. Localize Folders and Reports
  13. 信奥一本通2071题
  14. Python做游戏很难吗—来看看我做的多有趣
  15. 246Echarts - 3D 曲面(Image Surface Sushuang)
  16. java对象头markword_浅谈java对象结构 对象头 Markword
  17. 黑客正利用“Black Lives Matter”政治口号传播恶意软件
  18. JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试
  19. 运行vue报错npm ERR! A complete log of this run can be found in解决办法
  20. 使用mobiscroll实现级联效果

热门文章

  1. mysql alert()_Cabot Alert Mysql环境搭建
  2. 精益开发实战:用看板管理大型项目
  3. 2021年T电梯修理考试及T电梯修理考试题库
  4. 电路基础_模拟电路_问答_2023_01
  5. 记录使用spring-cloud-starter-alibaba-nacos-config 注册到 nacos 时配置问题。
  6. python 语音朗读软件-python 利用pyttsx3文字转语音过程详解
  7. Ardupilot 高度控制代码整理(超长篇)
  8. 沸点网络电视停运之殇
  9. 都在讨论函数对象,那么,什么是函数对象呢?
  10. 【UEFI基础】用Windbg建立UEFI调试环境