当前位置: 首页 > web >正文

SpringBoot 中文转拼音 Pinyin4j库 拼音转换 单据管理 客户管理

介绍

在客户管理系统中部分客户的名字会有生僻字为了沟通时候不叫错客户的名称,因此决定将客户名称的拼音一起返回给前端,也可以直接交给前端去处理。这里介绍后端的做法

Pinyin4j 是一个用于将汉字转换为拼音的 Java 库。在需要对中文文本进行拼音转换、拼音排序、拼音检索等功能。

依赖

<dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.1</version>
</dependency>

工具类

public class PinYinUtils {/*** 将中文转换为拼音** @param chinese 中文字符串* @return 拼音字符串*/public static String toPinyin(String chinese) {HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();/**setVCharType: 设置拼音中“ü”的输出方式。*   HanyuPinyinVCharType.WITH_U_AND_COLON: 输出为“u:”(例如“ü”变成“u:”)*   HanyuPinyinVCharType.WITH_V: 输出为“v”(例如“ü”变成“v”)*   HanyuPinyinVCharType.WITH_U_UNICODE: 输出为“ü”字符(例如“ü”保持不变)* */format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);/**setToneType: 设置声调的类型,常见的类型有:* HanyuPinyinToneType.WITH_TONE_MARK: 带声调标记(例如“pī”)* HanyuPinyinToneType.WITHOUT_TONE: 不带声调(例如“pi”)* HanyuPinyinToneType.WITH_TONE_NUMBER: 使用数字表示声调(例如“pi1”)* */format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);/**** HanyuPinyinCaseType.UPPERCASE: 大写字母* HanyuPinyinCaseType.LOWERCASE: 小写字母*/format.setCaseType(HanyuPinyinCaseType.LOWERCASE);StringBuilder pinyin = new StringBuilder();for (char c : chinese.toCharArray()) {/**** ^[\u2E80-\u9FFF]+$ 匹配所有东亚区的语言* ^[\u4E00-\u9FFF]+$ 匹配简体和繁体* ^[\u4E00-\u9FA5]+$ 匹配简体*/if (Character.toString(c).matches("[\\u4E00-\\u9FFF]")) { // 判断是否为中文try {String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format);if (pinyinArray != null && pinyinArray.length > 0) {pinyin.append(pinyinArray[0]).append(" ");;}} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}} else {pinyin.append(c);}}return pinyin.toString();}}

使用

System.out.println(PinYinUtils.toPinyin("马冬梅"));
http://www.xdnf.cn/news/7379.html

相关文章:

  • 电脑A和电脑B都无法ping通电脑C网络,电脑C可以ping通电脑A和B,使用新系统测试正常,排除硬件问题。
  • 【漫话机器学习系列】268. K 折交叉验证(K-Fold Cross-Validation)
  • CAD看图王三维功能升级能解决哪些问题?
  • vulfocus漏洞学习——redis 未授权访问 (CNVD-2015-07557)
  • CSS提高性能的方法有哪些
  • @RequestParam 和 @RequestBody、HttpServletrequest 与HttpServletResponse
  • 解析:新能源汽车芯片主要玩家及技术发展
  • 从秒开到丝滑体验!WebAssembly助力ZKmall商城重构 B2B2C 商城性能基线
  • 四:操作系统cpu调度之调度算法
  • PyQt5绘图全攻略:QPainter、QPen、QBrush与QPixmap详解
  • uniapp运行到微信开发者工具报错“更改appid失败touristappidError:tourist appid”
  • Spring Bean 生命周期中设计模式的应用与解析
  • 通过vcpkg交叉编译grpc:构建Arm64平台的Docker化开发环境
  • 掌握Git:版本控制与高效协作指南
  • 【C++】哈希的概念与实现
  • 命令行登录 MySQL 报 Segmentation fault 故障解决
  • 代购商城系统可以解决哪些重点难题?
  • 前端 vue + element-ui 框架从 0 - 1 搭建
  • React组件开发流程-03.1
  • go 数据类型转换
  • 5个yyds的.Net商城开源项目
  • [特殊字符] Word2Vec:将词映射到高维空间,它到底能解决什么问题?
  • 【Spring Boot 整合 MongoDB 完整指南】
  • sentinel核心原理-高频问题
  • Android设备 显示充电速度流程
  • 使用 Terraform 创建 Azure Databricks
  • Milvus 从 v2.4.12 升级到 v2.5.11 的实施方案
  • 基于Qt的app开发第九天
  • disryptor和rabbitmq
  • 【notes】VScode 使用总结