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

后端实现:
最开始选择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));}
}

结果演示:

更多方法使用:

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

Java实现汉字转拼音,多音字处理,简单明了相关推荐

  1. JAVA实现汉字转换为拼音 pinyin4j/JPinyin

    转载自  JAVA实现汉字转换为拼音 pinyin4j/JPinyin 在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,比如说通讯录,就会要求按名字首字符发音排序,如果自己写实现这方面的功能是个 ...

  2. 【Java】汉字转拼音

    [Java]汉字转拼音 将汉字转成拼音及汉字首字母,可以使用jar包 pingyin4j,但是遇到多音节汉字就会有问题.如果使用大名鼎鼎的jpinyin,可以自动识别常见多音字,而且还支持简体转换为繁 ...

  3. java 实现汉字转换拼音_JAVA实现汉字转拼音功能代码实例

    JAVA中汉字转拼音的方法并不复杂,可以使用pinyin4j包来实现. 一.下载pinyin4j的架包,并导入项目中,如下: 如果是maven项目,maven依赖如下: com.belerweb pi ...

  4. java实现汉字转为拼音

    java实现汉字转为拼音: 1.需要导入pinyin4j.jar package com.loo.pinyin; import net.sourceforge.pinyin4j.PinyinHelpe ...

  5. java 实现汉字转换拼音_Java实现汉字转换为拼音

    # re: Java实现汉字转换为拼音 2006-11-24 15:06 芦苇 JAVA将汉字转化成拼音的方法 /** *//** ################################## ...

  6. java 实现汉字转拼音,java汉字简体转繁体 java汉字繁体转简体

    java 实现汉字转拼音,java汉字简体转繁体 java汉字繁体转简体 一.前言 java实现汉字转拼音,我的思路是需要一个字符和拼音的映射库."我"=wo,"们&qu ...

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

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

  8. Java中汉字转拼音pinyin4j的用法

    pinyin4j 是一个支持将简体和繁体中文转换到成拼音的Java开源类库: 依赖jar包导入 <!-- pinyin4j 汉语转拼音 --><dependency><g ...

  9. java pinyin4j_Java汉字转拼音pinyin4j用法详解

    一.工具介绍 pinyin4j 是一个支持将简体和繁体中文转换到成拼音的Java开源类库: 1. 功能 支持同一汉字有多个发音 还支持拼音的格式化输出,比如第几声之类的, 同时支持简体中文.繁体中文转 ...

  10. 汉字转拼音之Jpinyin 简单使用

    JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进. [JPinyin主要特性] 1.准确.完善的字库: Unicode编码从4E00-9FA5范围及3007 ...

最新文章

  1. layoutSubviews何时被调用
  2. 二十万字C/C++、嵌入式软开面试题全集宝典八
  3. Android CTS 测试总结【转】
  4. Ansible系列--Copy模块
  5. PaperWeekly 第十一期
  6. 嵌入式开发有年龄限制吗_报名深圳成考有年龄限制吗?
  7. 推荐系统学习(一)推荐系统分类与基本流程
  8. 三星Galaxy Note10系列带壳渲染图曝光:将取消3.5mm耳机孔
  9. 回归分析beta值的标准_读懂回归分析-SPSS为例(无广告)
  10. js调用php会提前加载,为什么js代码里调用了php变量运行就明显变慢了
  11. 两个文本框异动任何一个能即时更新计算结果
  12. Dubbo 的设计思想,真优秀!
  13. PbootCMS插件自动采集伪原创免费插件
  14. 怎么看计算机电源型号,电脑电源铭牌怎么看?台式机电源铭牌知识扫盲 拒绝虚标!...
  15. 文件服务器整机克隆,克隆云服务器到本地
  16. 楼道扶手智能清洁装置的制作分享
  17. 道一云OA系统排名?道一云OA办公系统怎么选?什么是用户口碑最好的道一云OA系统?
  18. vue-element-admin 的使用记录(三)
  19. 关于JVM参数-XX:SurvivorRatio的理解
  20. MySQL中查询和删除重复行

热门文章

  1. 485总线调试问题总结
  2. 万恶之源SQL---强制类型转化(日期转换)
  3. 逻辑学 笔记一 推论的有效性和可靠性
  4. numa节点间CPU利用率不均衡 - wakeup affinity
  5. Google Adsense的愚人节整蛊
  6. GY906 MLX90614 非接触式 红外测温传感器 LabVIEW i2c总线数据读取
  7. “章”到用时方恨“少”,电子印章来救场!
  8. 离开学校如何自学修炼成为一名网页设计师(一)
  9. Redis——Info指令
  10. 平面设计师要掌握的版式基础大全