介绍语

本号主要是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相关推荐

  1. 「Adobe国际认证」运用“对象选择”工具,在PS中快速建立选区

    原标题:「Adobe国际认证」运用"对象选择"工具.在 Adobe Photoshop 快速建立选区. "对象选择"工具 对象选择工具可简化在图像中选择单个对象 ...

  2. IGV-GSAman |「功能基因组时代」的高效率科研工具

    写在前面 今天周末,转眼10月份只剩一周.万万没想到,一个月下去,我还是花了不少时间在完善「GSAman」.至于为什么本来「两个小时」就干完的事情,可以干成「22天」?到底还是我对前面的版本,不太满意 ...

  3. 汉语转拼音工具、新华字典API——两个支持Python的中文资源

    整理 | Jane 出品 | AI科技大本营 [导读]平常为大家推荐的资源中,以英语语言占据大多数.今天 AI科技大本营特别要为大家推荐两个跟中文相关的资源工具.先简单介绍下这两个资源工具都是什么.第 ...

  4. php 汉字转拼音类,PHP汉字转换拼音的类_php

    网络上类似的代码大多只能在gb2312编码下使用,下面这个类同时能在utf-8编码下将汉字转换为拼音,具体的代码和用法如下: function Pinyin($_String, $_Code='gb2 ...

  5. java 下拉列表 枚举_「Java三分钟」精准而优雅——枚举类详解

    关注我,每天三分钟,带你轻松掌握一个Java相关知识点. 1.为什么要用枚举 你在读一个老工程代码时,是否经常看见有几个类,里面放着成百上千的静态常量,场面相当恐怖,而且如果不加注释,很多你都不知道这 ...

  6. 知乎热议程序员「35岁定律」,32岁女生转行学Java是否可行?

    32岁女生转行学习一年Java,是否有出路?这一问题引起了网友们的关注.有网友表示,程序员真是一座围城,城外的人想进去,城里的人想出来. 32岁转行学Java晚不晚? 一位国企编外的32岁女生在知乎发 ...

  7. 「Gradle学习笔记」一、构建工具

    构建工具的产生   在项目开发过程中,出于测试或正式发布的目的,需要进行一系列步骤来构建项目生成可执行的二进制文件.一般来说,首先需要确定项目所需的依赖都已正确安装,然后将项目源代码和依赖编译链接生成 ...

  8. java 画笔跟swing组件_「软帝学院」:2019思维最清晰的java学习路线

    第一步 首先要做好学习前的准备工作:java语言一般用于大型的服务器程序开发,所有有必要了解如下内容:Unix开发环境Unix系统原理.Unix开发环境.Unix常用命令.熟练掌握Unix常用命令:熟 ...

  9. 「PS-CC2019新版教程」裁剪工具,切片工具的使用教程

    上期给大家做的魔棒/快速选区工具的基础教程,不知道大家有没有认真的学习练习!选区工具是作图抠图必不可少的而且相对比较常用的方法!今天给大家讲解一下裁剪工具/切片工具,你的图片你说的算,长宽高由做主! ...

最新文章

  1. 测试眉形的有哪个软件_心理测试:你的眉形是下面的哪种?测你生来命运如何!超准...
  2. 干货|2018物流机器人行业报告发布!不容错过
  3. python 数据分析学习笔记 (第三章)
  4. windows10如何删除文件时提示?(回收站--右键属性--显示删除确认对话框)
  5. Delphi编程技术简介
  6. js操作元素节点对象value
  7. ajax中dom,在(jQuery)ajax请求中获取当前脚本DOM对象
  8. ASP.NET MVC增删改查
  9. vue2中的keep-alive使用总结及注意事项
  10. 苹果cms V10模板 仿优酷网PC模板+wap模板
  11. android仿bilibili ui,android指纹识别、拼图游戏、仿MIUI长截屏、bilibili最美创意等源码...
  12. SCI从入门到精通(二)——如何阅读文献
  13. Bootstrap元素居中
  14. board crt_容器编排系统K8s之Dashboard部署
  15. matlab均值滤波代码6,均值滤波matlab程序代码
  16. 学士后java软件工程师_北大青鸟码农学士后Java软件工程师课程
  17. idea配置port
  18. 浅谈地震观测仪器的历史和发展趋势
  19. OpenWrt MT7621使用pyinstaller打包失败解决办法
  20. 《人月神话》(P10)必须有文档

热门文章

  1. Linux 开机提示kernel panic...解决方法
  2. R语言 观测异常值并改进
  3. mac pro 键帽 方向键 上下键 拆卸
  4. 2022年护士考试知识强化巩固习题及答案
  5. Unable to load script code in VisualGuidance.The script will not be used until the error 的错误的解决方法
  6. 【实习日记】实习第N天 从零开始搭建一个tiktok puppet(一)
  7. Tomcat指定war包路径部署
  8. 敏捷开发绩效管理之四:为团队设立外部绩效目标(目标管理,外向型绩效)
  9. P1217 回文质数
  10. Python:(使用matplotlib画图)使用bar画柱状图,并标注数字