「Java工具类」汉语转拼音工具类HanyuPinyinHelper.java
介绍语
本号主要是Java常用关键技术点,通用工具类的分享;以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+docker等集成框架的技术分享;datax、kafka、flink等大数据处理框架的技术分享。文章会不断更新,欢迎码友关注点赞收藏转发!
望各位码友点击关注,冲1000粉。后面会录制一些视频教程,图文和视频结合,比如:图书介绍网站系统、抢购系统、大数据中台系统等。技术才是程序猿的最爱,码友们冲啊
如果码友觉得代码太长,可以从头到尾快速扫射一遍,了解大概即可。觉得有用后再转发收藏,以备不时之需。
正文:
拼音转换工具类,用到的场景比较少。
例子1
String s = "大师兄师傅被妖怪抓走了";System.out.println(HanyuPinyinHelper.toPinyin(s));System.out.println(HanyuPinyinHelper.toPinyinOfFirstLetter(s));System.out.println(HanyuPinyinHelper.getFirstLettersUpper(s));System.out.println(HanyuPinyinHelper.getFirstLettersLower(s));// 控制台输出dashixiongshifubeiyaoguaizhuazouleDaShiXiongShiFuBeiYaoGuaiZhuaZouLeDSXSFBYGZZLdsxsfbygzzl
工具类源码:
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class HanyuPinyinHelper {private static final Logger LOGGER = LoggerFactory.getLogger(HanyuPinyinHelper.class);/*** 将文字转为汉语拼音** @param chinese 要转成拼音的中文*/public static String toPinyin(String chinese) {char[] cl_chars = chinese.trim().toCharArray();StringBuilder hanyupinyin = new StringBuilder();HanyuPinyinOutputFormat defaultFormat = format();try {for (int i = 0; i < cl_chars.length; i++) {// 如果字符是中文,则将中文转为汉语拼音if (String.valueOf(cl_chars[i]).matches("[\u4e00-\u9fa5]+")) {hanyupinyin.append(PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0]);} else {// 如果字符不是中文,则不转换hanyupinyin.append(cl_chars[i]);}}} catch (BadHanyuPinyinOutputFormatCombination e) {LOGGER.error("字符不能转成汉语拼音", e);}return hanyupinyin.toString();}/*** 将文字转为汉语拼音** @param chinese 要转成拼音的中文*/public static String toPinyinOfFirstLetter(String chinese) {char[] cl_chars = chinese.trim().toCharArray();StringBuilder hanyupinyin = new StringBuilder();HanyuPinyinOutputFormat defaultFormat = format();try {for (int i = 0; i < cl_chars.length; i++) {String str = String.valueOf(cl_chars[i]);// 如果字符是中文,则将中文转为汉语拼音if (str.matches("[\u4e00-\u9fa5]+")) {//多音字只取第一个String s = PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0];char firstLetter = s.charAt(0);String pinyin = String.valueOf(firstLetter).toUpperCase().concat(s.substring(1));hanyupinyin.append(pinyin);} else {// 如果字符不是中文,则不转换hanyupinyin.append(cl_chars[i]);}}} catch (BadHanyuPinyinOutputFormatCombination e) {LOGGER.error("字符不能转成汉语拼音", e);}return hanyupinyin.toString();}public static String getFirstLettersUpper(String chinese) {return getFirstLetters(chinese, HanyuPinyinCaseType.UPPERCASE);}public static String getFirstLettersLower(String chinese) {return getFirstLetters(chinese, HanyuPinyinCaseType.LOWERCASE);}private static String getFirstLetters(String chinese, HanyuPinyinCaseType caseType) {char[] cl_chars = chinese.trim().toCharArray();StringBuilder hanyupinyin = new StringBuilder();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();// 输出拼音全部大写defaultFormat.setCaseType(caseType);// 不带声调defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);try {for (int i = 0; i < cl_chars.length; i++) {String str = String.valueOf(cl_chars[i]);if (str.matches("[\u4e00-\u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母hanyupinyin.append(PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0].substring(0, 1));} else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字hanyupinyin.append(cl_chars[i]);} else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母hanyupinyin.append(cl_chars[i]);} else {// 否则不转换hanyupinyin.append(cl_chars[i]);}}} catch (BadHanyuPinyinOutputFormatCombination e) {LOGGER.error("字符不能转成汉语拼音", e);}return hanyupinyin.toString();}private static HanyuPinyinOutputFormat format() {HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();// 输出拼音全部小写defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 不带声调defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V);return defaultFormat;}public static void main(String[] args) {String s = "大师兄师傅被妖怪抓走了";System.out.println(HanyuPinyinHelper.toPinyin(s));System.out.println(HanyuPinyinHelper.toPinyinOfFirstLetter(s));System.out.println(HanyuPinyinHelper.getFirstLettersUpper(s));System.out.println(HanyuPinyinHelper.getFirstLettersLower(s));}
}
maven依赖包
<dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version>
</dependency>
鄙人编码十年多,在项目中也积累了一些工具类,很多工具类在每个项目都有在用,很实用。大部分是鄙人封装的,有些工具类是同事封装的,有些工具类已经不记得是ctrl+c的还是自己封装的了,现在有空就会总结项目中大部分的工具类,分享给各位码友。如果文章中涉及的代码有侵权行为请通知鄙人处理。
计划是先把工具类整理出来,正所谓工欲善其事,必先利其器。项目中不管是普通单体项目还是多模块maven项目或是分布式微服务,一部分功能模块都是可以重用的,工具类模块就是其中之一。
「Java工具类」汉语转拼音工具类HanyuPinyinHelper.java相关推荐
- 「Adobe国际认证」运用“对象选择”工具,在PS中快速建立选区
原标题:「Adobe国际认证」运用"对象选择"工具.在 Adobe Photoshop 快速建立选区. "对象选择"工具 对象选择工具可简化在图像中选择单个对象 ...
- IGV-GSAman |「功能基因组时代」的高效率科研工具
写在前面 今天周末,转眼10月份只剩一周.万万没想到,一个月下去,我还是花了不少时间在完善「GSAman」.至于为什么本来「两个小时」就干完的事情,可以干成「22天」?到底还是我对前面的版本,不太满意 ...
- 汉语转拼音工具、新华字典API——两个支持Python的中文资源
整理 | Jane 出品 | AI科技大本营 [导读]平常为大家推荐的资源中,以英语语言占据大多数.今天 AI科技大本营特别要为大家推荐两个跟中文相关的资源工具.先简单介绍下这两个资源工具都是什么.第 ...
- php 汉字转拼音类,PHP汉字转换拼音的类_php
网络上类似的代码大多只能在gb2312编码下使用,下面这个类同时能在utf-8编码下将汉字转换为拼音,具体的代码和用法如下: function Pinyin($_String, $_Code='gb2 ...
- java 下拉列表 枚举_「Java三分钟」精准而优雅——枚举类详解
关注我,每天三分钟,带你轻松掌握一个Java相关知识点. 1.为什么要用枚举 你在读一个老工程代码时,是否经常看见有几个类,里面放着成百上千的静态常量,场面相当恐怖,而且如果不加注释,很多你都不知道这 ...
- 知乎热议程序员「35岁定律」,32岁女生转行学Java是否可行?
32岁女生转行学习一年Java,是否有出路?这一问题引起了网友们的关注.有网友表示,程序员真是一座围城,城外的人想进去,城里的人想出来. 32岁转行学Java晚不晚? 一位国企编外的32岁女生在知乎发 ...
- 「Gradle学习笔记」一、构建工具
构建工具的产生 在项目开发过程中,出于测试或正式发布的目的,需要进行一系列步骤来构建项目生成可执行的二进制文件.一般来说,首先需要确定项目所需的依赖都已正确安装,然后将项目源代码和依赖编译链接生成 ...
- java 画笔跟swing组件_「软帝学院」:2019思维最清晰的java学习路线
第一步 首先要做好学习前的准备工作:java语言一般用于大型的服务器程序开发,所有有必要了解如下内容:Unix开发环境Unix系统原理.Unix开发环境.Unix常用命令.熟练掌握Unix常用命令:熟 ...
- 「PS-CC2019新版教程」裁剪工具,切片工具的使用教程
上期给大家做的魔棒/快速选区工具的基础教程,不知道大家有没有认真的学习练习!选区工具是作图抠图必不可少的而且相对比较常用的方法!今天给大家讲解一下裁剪工具/切片工具,你的图片你说的算,长宽高由做主! ...
最新文章
- 测试眉形的有哪个软件_心理测试:你的眉形是下面的哪种?测你生来命运如何!超准...
- 干货|2018物流机器人行业报告发布!不容错过
- python 数据分析学习笔记 (第三章)
- windows10如何删除文件时提示?(回收站--右键属性--显示删除确认对话框)
- Delphi编程技术简介
- js操作元素节点对象value
- ajax中dom,在(jQuery)ajax请求中获取当前脚本DOM对象
- ASP.NET MVC增删改查
- vue2中的keep-alive使用总结及注意事项
- 苹果cms V10模板 仿优酷网PC模板+wap模板
- android仿bilibili ui,android指纹识别、拼图游戏、仿MIUI长截屏、bilibili最美创意等源码...
- SCI从入门到精通(二)——如何阅读文献
- Bootstrap元素居中
- board crt_容器编排系统K8s之Dashboard部署
- matlab均值滤波代码6,均值滤波matlab程序代码
- 学士后java软件工程师_北大青鸟码农学士后Java软件工程师课程
- idea配置port
- 浅谈地震观测仪器的历史和发展趋势
- OpenWrt MT7621使用pyinstaller打包失败解决办法
- 《人月神话》(P10)必须有文档
热门文章
- Linux 开机提示kernel panic...解决方法
- R语言 观测异常值并改进
- mac pro 键帽 方向键 上下键 拆卸
- 2022年护士考试知识强化巩固习题及答案
- Unable to load script code in VisualGuidance.The script will not be used until the error 的错误的解决方法
- 【实习日记】实习第N天 从零开始搭建一个tiktok puppet(一)
- Tomcat指定war包路径部署
- 敏捷开发绩效管理之四:为团队设立外部绩效目标(目标管理,外向型绩效)
- P1217 回文质数
- Python:(使用matplotlib画图)使用bar画柱状图,并标注数字