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

article/2025/5/2 7:31:16

业务需求:将用户中文名字根据拼音首字母分类排序

直接上代码:

引入依赖:

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

创建工具类:

import cn.newi.common.util.StringUtil;
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;public class PinyinUtils {/** * 将字符串中的中文转化为拼音,英文字符不变 *  * @param inputString *            汉字 * @return */  public static String getPingyin(String inputString) {  HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();  format.setCaseType(HanyuPinyinCaseType.LOWERCASE);  format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  format.setVCharType(HanyuPinyinVCharType.WITH_V);  String output = "";  if (!StringUtil.isEmpty(inputString) && !"null".equals(inputString)) {  char[] input = inputString.trim().toCharArray();  try {String notChsTmp = "";for (int i = 0; i < input.length; i++) {if (java.lang.Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {if (!StringUtil.isEmpty(notChsTmp)){output += notChsTmp;output += " ";  notChsTmp = "";}String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);  output += temp[0];  if (i < input.length - 1){output += " ";  }} else {notChsTmp += java.lang.Character.toString(input[i]);  }}//循环外面如果最后一个不是中文,最后补加上非中文字符串if (!StringUtil.isEmpty(notChsTmp)){output += notChsTmp;notChsTmp = "";}} catch (BadHanyuPinyinOutputFormatCombination e) {  e.printStackTrace();  }  }return output;  }  /** * 汉字转换位汉语拼音首字母,英文字符不变 *  * @param chines *            汉字 * @return 拼音 */  public static String getShoupin(String chines) {  String pinyinName = "";  char[] nameChar = chines.toCharArray();  HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();  defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);  defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  for (int i = 0; i < nameChar.length; i++) {  if (nameChar[i] > 128) {  try {  pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0);  } catch (BadHanyuPinyinOutputFormatCombination e) {  e.printStackTrace();  }  } else {  pinyinName += nameChar[i];  }  }  return pinyinName;  }  public static void main(String[] args) {System.out.println(getPingyin("张三001"));System.out.println(getShoupin("张三001"));}
}

结果:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/cktjpsyA.shtml

相关文章

excel中提取中文拼音

概述&#xff1a;在工作时&#xff0c;有时候会用到汉语拼音&#xff0c;本文讲述如何在Excel中通过vba程序提取汉字的拼音。 1、altF11调出vba编写窗口 2、新建——模块 3、粘贴以下代码 Function PinYin2(Hz As String)Dim PinMa As StringDim MyPinMa As VariantDim Temp As…

MYSQL 中取拼音首字母的函数

2019独角兽企业重金招聘Python工程师标准>>> 今天碰到了取拼音首字母的需求。整理了一下。 1、编码表&#xff1a; /*DDL Information For - test.cs_char2letter*/ ------------------------------------------------------ Table Create Table …

Openlayers利用kriging.js实现纯前端插值

关于空间插值这一块&#xff0c;也是GIS一个重要的分析。前端可以通过turf.js后端可以采用contour&#xff0c;如果仅有少量数据需要进行插值分析并进行展示&#xff0c;那应当如何做&#xff1f;可以采用turf.js但是turf.js插值效果是真的烂。通过检索发现可以通过kriging.js去…

Cesium+kriging.js实现雨量插值

0.前言 网上有很多关于openlayers的克里金插值&#xff0c;但是最近在学习cesium&#xff0c;也想在cesium中做&#xff0c;但是好像网上相关的例子一个都没有。所以我就自己尝试去做。 1.克里金插值 克里金插值也称作空间局部插值法&#xff0c;或空间自协方差最佳插值法&…

色斑图制作及后端无人值守自动出图kriging.js+chrome+html2canvas.js+DOS+BIGEMAP超低成本实现气象要素色斑图

目录 一、问题由来 二、探索 三、尝试 四、修正 五、优化方案 六、kriging.js 使用感受小结 七、参考文章 八、原始例程下载 下载连接&#xff1a;https://download.csdn.net/download/jessezappy/16769114 一、问题由来 因业务需要&#xff0c;需要根据小时温度、雨量…

基于 Python(gma) 的 克里金(Kriging)法插值的主要过程

由于克里金插值的复杂性&#xff0c;本文不再对其原理进行介绍。详情可自行百度。 本算法基于 Python 的开源克里金插值包 pykrige。但本算法已对其进行改造&#xff0c;以使其符合 gma 的整体逻辑。本算法已不包含任何 pykrige 的原始代码。 原始代码构建 from gma.algorithm…

AAAI2021论文: 时空Kriging的归纳式图神经网络

1、文章信息 《Inductive Graph Neural Networks for Spatiotemporal Kriging》。麦吉尔大学发表在AAAI 2021上的一篇文章。 原文和代码链接&#xff1a; https://github.com/Kaimaoge/IGNNK 2、摘要 时间序列预测和时空Kriging是时空数据分析中最重要的两项任务。近年来&#…

Cesium结合kriging.js制作降雨等值面

Cesium结合kriging.js制作降雨等值面 前因实现效果图使用克里金插值kriging.js使用方法解析 前因 因工作需要使用cesium制作降雨等值面&#xff0c;所以在参考众多博客后。终于是成功实现了降雨等值面。 参考博客&#xff1a; https://blog.csdn.net/weixin_44265800/article/…

kriging及其加点准则学习

什么是加点&#xff1f; 所谓加点&#xff0c;就是给数据集增添数据点对模型进行训练。添加数据点&#xff0c;意思就是获得这个想要的数据点的真实响应&#xff0c;可以是实验的结果&#xff0c;也可以精细仿真的结果。但不管怎样&#xff0c;每增加一个数据点&#xff0c;都…

openlayers加kriging出等值线图

openlayers加kriging出等值线图 方法一 效果图 代码 <!DOCTYPE html> <html> <head><meta charset"utf-8" /><title>前端空间插值</title><style>html, body, #map {height: 100%;width: 100%;}</style><link…

leflet使用kriging.js构建气象图层

一、克里金法 kriging.js kriging.js是一个 Javascript 库&#xff0c;通过普通克里金算法提供空间预测和映射功能。 克里金法是一种高斯过程&#xff0c;其中使用核回归将二维坐标映射到某个目标变量。该算法经过专门设计&#xff0c;可通过为变异函数参数分配先验参数来准确…

Kriging(克里金模型)介绍

克里金模型最早出现在地质学文献中&#xff0c;用来估计有价值矿物的分布。萨克斯艾尔1989年将这种方法应用于近似的计算机实验。此后&#xff0c;克里格法被广泛研究并应用于工程领域。 克里格模型也称为高斯过程模型&#xff0c;因为它将目标函数建模为高斯过程的实现。定义…

克里金(kriging)模型的推导详解

Kriging模型理论推导 1、前言2、条件3、基础知识3.1、方差的理解3.2、概率密度函数3.3、多元正态分布 4、理论推导4.1 模型建立4.2 模型预测 1、前言 简介&#xff1a;Kriging模型是一种通过已知试验点信息来预测未知试验点上响应的无偏估计模型&#xff0c;其最早是由南非矿业…

c语言函数库----<ctype.h>

<ctype.h>是c标准函数库中的头文件&#xff0c;定义了一批c语言字符分类函数&#xff0c;下面将介绍<ctype.h>中的一些函数。 1、isascii()函数 isascii()函数是c语言中字符检测函数。通常用于检查参数c是否为ASCII 码字符&#xff0c;也就是判断c 的范围是否在0…

C语言——标准函数库

<stdlib.h> 算数&#xff1a; 1、函数abs和labs返回参数的绝对值 int abs( int value ); long int labs( long int value ); 2、函数div和ldiv做除法运算 div_t div( int numerator, int denominator ); ldiv_t ldiv( long int numer, long int denom ); 函数第一个参数…

Qt中调用C语言函数库

接着上一篇文章&#xff0c;试图画出速度模型时&#xff0c;中间会有用到调用C库函数--gsl库&#xff1b;记一下怎么使用的&#xff1a; 和C语言中类似&#xff0c;但要使用到条件编译&#xff1a; #ifdef __cplusplus extern "C" { #endif #include <gsl/gsl_…

c语言标准函数库怎么建立教程,C语言-基础教程-C语言函数库和文件

一个函数设计完后&#xff0c;我们可以用三种方法处理它&#xff1a;1)把它放在main()函数的同一个文件中&#xff1b;2)把它和写好的其它函数一起放在另一个文件中&#xff1b;3)把它放在函数库中。下面分别讨论这三种方法。 4.6.1程序文件的大小 因为C语言允许分别编译&#…

C语言字符串处理函数库

C语言的字符串处理函数库包括复制函数、拼接函数、比较函数、搜索函数等&#xff0c;这些函数的声明都位于头文件<string.h>。使用这些函数时&#xff0c;需要使用#include<string.h>指令将头文件包含到文件中。 复制函数 复制函数的功能是将字符&#xff08;节&…

C语言数学函数库

数学函数库 几乎所有语言都会提供数学函数库&#xff0c;数学函数库起码包含幂&#xff0c;对数、三角函数等最基本的运算&#xff0c;C对于基本数学函数还算全面&#xff0c;如下表&#xff1a; 使用数学函数库需要导入math.h&#xff0c;表中所有参数和返回值都是double&am…

c语言常用库函数

c语言常用库函数 1、数学函数 abs 原型&#xff1a;extern int abs(int x); 功能&#xff1a;求整数x的绝对值 说明&#xff1a;计算|x|, 当x不为负时返回x&#xff0c;否则返回-xfabs 原型&#xff1a;extern float fabs(float x); 功能&#xff1a;求浮点数x的绝对值 说明&…