背景:
之前一直是前端直接调用公司公共城市组件获取城市列表,现在由于公共组件不再支持,需要由后端接口提供城市查询,并且按照城市首字母分组展示。

后端实现:
最开始选择pinyin4j来实现,但发现对多音字的处理不太友好,比如需要转重庆的拼音(可以看到结果并不是我们想要的):

解决方法就需要自己定义多音字字典来实现,解析这个文件优先从这个文件中获取拼音,类似如下文件(字典格式可自行定义):

以上自己定义字典的方式比较麻烦,经过在网上的一顿搜索,发现可以使用具有语义的依赖包(底层也是用的自定义字典实现):

<dependency><groupId>com.hankcs</groupId><artifactId>hanlp</artifactId><version>portable-1.8.3</version>
</dependency>
复制代码

在项目中定义一个工具类:

public class PinyinUtil {/*** 获取中文完整拼音** @param chineseStr* @return*/public static String getPinyin(String chineseStr) {List<Pinyin> pinyins = PinyinDictionary.convertToPinyin(chineseStr);StringBuilder stringBuilder = new StringBuilder();for (Pinyin pinyin : pinyins) {stringBuilder.append(pinyin.getPinyinWithoutTone());}return stringBuilder.toString();}/*** 获取中文拼音首字母** @param chineseStr* @return*/public static String getInitial(String chineseStr) {List<Pinyin> pinyins = PinyinDictionary.convertToPinyin(chineseStr);if (CollectionUtils.isEmpty(pinyins)) {return StringUtils.EMPTY;}return String.valueOf(pinyins.get(0).getPinyinWithoutTone().charAt(0));}
}
复制代码

结果演示:

更多方法使用:

好了,到此结束。简单直接,没有一个字是多余的。

ava实现汉字转拼音,多音字处理相关推荐

  1. PHP高性能输出UNICODE正则汉字列表 汉字转拼音多音字解决方案 搜索引擎分词细胞词库更新 搜狗词库提取TXT...

    为什么80%的码农都做不了架构师?>>>    目前现状 汉字转拼音 难度大就大在 多音字!行业上较准确的是基于词语.成语的识别.搜狗有1万多词库 每个词库又很大: 比如: 了 我们 ...

  2. Java pinyin4j 汉字转拼音包括——多音字

    Java汉字转拼音(包括多音字) 有个需求需要把汉字转拼音,我的小伙伴推荐用Unicode官方的包:下载有些慢. 实际中用了Java工具包:pinyin4j解决 可以转汉字,多音字,多音字的地方要求不 ...

  3. android 汉字转字节,android实现汉字转拼音功能 带多音字识别

    android 汉字转拼音带多音字识别功能,供大家参考,具体内容如下 问题来源 在做地名按首字母排序的时候出现了这样一个bug.长沙会被翻译拼音成zhangsha,重庆会被翻译拼音成zhong qin ...

  4. 汉字转拼音,一二级词库,不支持多音字

    GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个. 分区表示  GB 2312中对所收汉字进行了"分区"处理,每区含有94个汉字/符号.这种表示方式 ...

  5. thinkphp5整合系列之汉字转拼音完美支持多音字

    thinkphp5整合系列之汉字转拼音完美支持多音字 1.进入thinkphp5项目的根目录,用composer 安装扩展 2.接下来需要做的事就是在控制器中引入 /vendor/overtrue/p ...

  6. 汉字转换拼音首字母(可以处理部分多音字)

    一.前言 汉字转拼音貌似一直是C#开发的一个难题,无论什么方案都有一定的bug,之前使用了两种方案. 1.Chinese2Spell.cs 一些不能识别的汉字全部转为Z 2.Microsoft Vis ...

  7. Java 汉字转拼音 完整代码实例(包含多音字解决方案)

    汉字转换拼音的方法是使用到一个库:pinyin4j 下载地址: https://download.csdn.net/download/pengfei1990/15562432 maven依赖 < ...

  8. java 判断汉字音调_JAVA实现汉字转换为拼音 自动识别常用多音字 JPinyin

    JAVA实现汉字转换为拼音 自动识别常用多音字 JPinyin 使用JPinyin,可以实现汉字转换为拼音,并自动识别常用多音字,还支持简体转换为繁体,检查是否为简体,是否为繁体,是否为中文字符等功能 ...

  9. 中文转拼音 java_java汉字转拼音 - java-苦苦甜甜的个人空间 - OSCHINA - 中文开源技术交流社区...

    ava汉字转拼音,主要是利用pinyin4j工具实现,有些场合,可能会用到汉字转换成拼音的功能,下面是具体的代码. import net.sourceforge.pinyin4j.PinyinHelp ...

最新文章

  1. Sublime-text theme 颜色主题
  2. Linux系统主要目录及作用
  3. 怎么使图表居中显示_文字怎么排版又精美又好看?
  4. Ansible YML语法
  5. Android中的颜色
  6. 小苗快速培养盆景苗方法_九里香盆景的制作与养护
  7. 设计模式:各个模式间的对比
  8. 职业发展鉴定方法:第一行:自己行 第二行:大家说你行 第三行:领导行 就这么简单,去努力吧,如果你做到了这三个行,那么你肯定行...
  9. 一个富二代仅凭“1+1”就压制了全世界的数学家两个世纪......
  10. python中列表,元组,字符串如何互相转换
  11. mysql 中文乱码解决方法
  12. 学习C++,知识点太多记不住怎么办?
  13. JSP中 input type 用法
  14. kafka监听topic消费_分布式专题|最近一直死磕kafka设计原理,都肝吐了
  15. cartographer代码流程分析
  16. 项目上线工作流程梳理
  17. 【设计模式】建造者模式
  18. Qgis教程4:文本数据的加载
  19. 提取html string,c#从html中提取文本
  20. 华盛顿大学西雅图 计算机科学 申请条件,华盛顿大学西雅图分校申请有哪些条件...

热门文章

  1. 什么是Tendermint?(1)
  2. Cert Manager 申请SSL证书流程及相关概念-三
  3. NLP成功十四项心理定律
  4. 进口NFC,运放,时间数字转换 芯片替代
  5. android将apk生成的二维码放到本地tomcatjenkin(Android 生成二维码)
  6. 面经手册 · 第14篇《volatile 怎么实现的内存可见?没有 volatile 一定不可见吗?》
  7. 第8章 项目进度管理
  8. C语言实现最大字段和(动态规划法和分治法)
  9. 2021-4-8 考研复旦大学 计算机 复试通过 经验回顾
  10. 血性的青,尿性的春——《中国合伙人》影评