项目中有时候需要把中文的拼音或首字母拿来做code区分或动态建表,工具类记录下,需要的时候直接复制过去就可以用了。

需要引入一个Jar:

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

最后我选择用拼音的首字母+时间戳的方式做为code,原因吗,看下执行结果就知道了。

package com.common.util;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.exception.BadHanyuPinyinOutputFormatCombination;
import org.apache.commons.lang3.StringUtils;/*** @description: 中文字符串处理工具* @author: JandMin**/
public class ChineseStrHelp {public static void main(String[] args) {// demoString str = "中文-abc+拼音";long start = System.currentTimeMillis();// 获取拼音System.out.println("获取拼音:" + convertToPinYin(str) + ",耗时:"+(System.currentTimeMillis()-start)+"毫秒");start = System.currentTimeMillis();// 获取拼音首字母System.out.println("获取拼音首字母:" + getPinYinHeadChar(str) + ",耗时:"+(System.currentTimeMillis()-start)+"毫秒");}/*** @Description: 获取中文字符串的拼音* @param chines 中文字符串* @return: java.lang.String*/public static String convertToPinYin(String chines) {if(StringUtils.isBlank(chines)){return "";}StringBuffer pinyinName = new StringBuffer();char[] nameChar = chines.toCharArray();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);int length = nameChar.length;for (int i = 0; i < length; i++) {String s = String.valueOf(nameChar[i]);if (s.matches("[\\u4e00-\\u9fa5]")) {try {String[] mPinyinArray = PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat);pinyinName.append(mPinyinArray[0]);} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}} else {pinyinName.append(nameChar[i]);}}return pinyinName.toString();}/*** @Description: 获取中文首字母大写并加时间戳* @param chines 中文字符串* @return: java.lang.String*/public static String getUpperHeadCharTimestamp(String chines){return getUpperHeadChar(chines) + System.currentTimeMillis();}/*** @Description: 获取中文首字母大写* @param chines 中文字符串* @return: java.lang.String*/public static String getUpperHeadChar(String chines){if(StringUtils.isBlank(chines)){return "";}return getPinYinHeadChar(chines).toUpperCase();}/*** @Description: 获取中文首字母* @param chines* @return: java.lang.String*/public static String getPinYinHeadChar(String chines) {if(StringUtils.isBlank(chines)){return "";}StringBuffer py = new StringBuffer();int len = chines.length();for (int j = 0; j < len; j++) {char word = chines.charAt(j);String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);if (pinyinArray != null) {py.append(pinyinArray[0].charAt(0));} else {py.append(word);}}return py.toString();}
}

demo执行结果:

获取拼音:zhongwen-abc+pinyin,耗时:76毫秒
获取拼音首字母:zw-abc+py,耗时:0毫秒

获取中文拼音或拼音首字母方法相关推荐

  1. java获取中文字符串汉语拼音和首字母

    业务需求:将用户中文名字根据拼音首字母分类排序 直接上代码: 引入依赖: <dependency><groupId>com.belerweb</groupId>&l ...

  2. 自动获取中文拼音首字母方法-Asp.net

    调用方法:GetFirstAlphabet("中文拼音首字母方法!");     public string GetFirstAlphabet(string str)     // ...

  3. C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母

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

  4. 把excel中把汉字转换成拼音(只取首字母)的方法和步骤

    利用Excel表格中的宏,轻松提取首字母 方法/步骤 1.启动Excel 2003(其它版本请仿照操作),打开相应的工作表: 2.执行"工具→宏→Visual Basic编辑器"命 ...

  5. 中英文混合拼音排序(从首字母开始,相同则往下比较)

    中英文混合拼音排序(从首字母开始,相同则往下比较) 中文/英文混合数据 进行转拼音(中文),按照26个字母顺序排序,从首字母开始比较,相同则比较第二个字母,如此类推,直到结束排序为止. pom.xml ...

  6. Excel汉字转拼音并提取首字母

    Excel汉字转拼音并提取首字母步奏 1.打开VB窗口alt+f11可以快捷打开 2.如下图新建模块 3.模块建好后插入代码 Function getpychar(char)tmp = 65536 + ...

  7. vue提取字符串中中文汉字的大写首字母

    vue提取字符串中中文汉字的大写首字母 1.需求背景 最近开发vue项目,在关于药品的项目中有个需求是要提取药品中文名称的首字母组成拼音码,例如:六味地黄丸提取首字母后是LWDHW. 解决方案 这里需 ...

  8. PHP 获取第一个汉字大写首字母

    PHP 获取第一个汉字大写首字母 /*** MethodName:获取第一个汉字大写首字母* Comment:*/ function getFirstCharters($str) {if (empty ...

  9. Java获取中文汉字拼音首字母方法二

    效果如下 岐山县 qishanxian QSX Java代码 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge. ...

  10. Java获取中文汉字拼音首字母方法一(更快速)

    实现效果 文字内容:小苹果 拼音首字母:xpg 工具类 import java.io.UnsupportedEncodingException;/*** @author yang* @version ...

最新文章

  1. Asp.net下实现隐藏真实下载地址(可以实现简单的防盗链)
  2. 动态更新ViewPager?
  3. Linux System Programming --Chapter Nine
  4. Android视频压缩并且上传
  5. [Qt教程] 第34篇 网络(四)FTP(二)
  6. Flume 实战开发指南
  7. 模板方法(Template Method)
  8. 过分的谜题 模拟+思维题
  9. 一句Python,一句R︱数据的合并、分组、排序、翻转、集合
  10. Github上的优秀安卓项目
  11. mysql各种key_SQL中的各种键
  12. Vc++安装包_Visual C++ 6.0中文版安装包下载及win11安装教程
  13. 使用M0 DesignStart 的样例SoC(example system) - 1 SoC组件
  14. 蚂蚁金服入职考试_我是如何拿到蚂蚁金服实习 offer 的
  15. CCCF“CNCC2017特邀报告”丘成桐:现代几何学与计算机科学
  16. ms sqlserver sap ase 数据库server-client通讯协议 TDS
  17. 机顶盒ttl无法输入_中兴机顶盒B8601.1T TTL后跑码无法输入指令
  18. 锋利的jQuery读书笔记-第7章 jQuery插件的使用和写法
  19. 虚幻4学习日志2021.4.1 关于瞬移(相机拉近)以及二段跳
  20. vue 组件中图片地址,图片获取

热门文章

  1. 此刻,投资自己,才是最好的投资
  2. 建网站域名服务器那个好,如何选择好建网站的域名?
  3. java.lang.NumberFormatException: For input string: “22-02-22 07:13:3
  4. flutter 国际化(组件英文转中文)
  5. C# 在 Excel 中创建组合图表
  6. 电子元件知识汇总2-封装
  7. 激光SLAM:LOAM-Livox 算法研究(1) -- 功能包编译与验证
  8. 机器人学领域的顶级期刊总结
  9. 解读:加性高斯白噪声信道
  10. Gauss 求积公式及代码