一、maven依赖

        <dependency><groupId>net.sourceforge.pinyin4j</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version></dependency>

二、示例代码

import com.pingan.lcloud.ark.log.LoggerUtil;
import net.sourceforge.pinyin4j.PinyinHelper;
import org.apache.commons.lang3.CharUtils;
import org.apache.commons.lang3.StringUtils;import java.lang.annotation.Native;
import java.util.Objects;/*** <code>Details determine success.</code>* by Liang ZC., Phd@Stanford* 中文工具类** @author LIANGZHICHENG035* @date 2019-11-6 15:57* @see http://www.stanford.edu*/
public class ChineseUtils {/**           N777777777NO*         N7777777777777N*        M777777777777777N*        *N877777777D77777M*       N M77777777ONND777M*       MN777777777NN  D777*     N7ZN777777777NN ~M7778*    N777777777777MMNN88777N*    N777777777777MNZZZ7777O*    DZN7777O77777777777777*     N7OONND7777777D77777N*      8*M++++?N???$77777$*       M7++++N+M77777777N*        N77O777777777777$                              M*          DNNM$$$$777777N                              D*         N*N:=N$777N7777M                             NZ*        77Z::::N777777777                          ODZZZ*       77N::::::N77777777M                         NNZZZ$*     $777:::::::77777777MN                        ZM8ZZZZZ*     777M::::::Z7777777Z77                        N++ZZZZNN*    7777M:::::M7777777$777M                       $++IZZZZM*   M777$:::::N777777*M7777M                       +++++ZZZDN*     NN$::::::7777$*M777777N                      N+++ZZZZNZ*       N::::::N:7*O:77777777                      N++++ZZZZN*       M::::::::::::N77777777+                   +?+++++ZZZM*       8::::::::::::D77777777M                    O+++++ZZ*        ::::::::::::M777777777N                      O+?D*        M:::::::::::M77777777778                     77=*        D=::::::::::N7777777777N                    777*       INN===::::::=77777777777N                  I777N*      ?777N========N7777777777787M               N7777*      77777*D======N77777777777N777N?         N777777*     I77777$$*N7===M$$77777777$77777777*MMZ77777777N*      $$$$$$$$$$*NIZN$$$$$$$$*M$$7777777777777777ON*       M$$$$$$$*M    M$$$$$$$*N=N$$$$7777777$$*ND*      O77Z$$$$$$$     M$$$$$$$*MNI==*DNNNNM=~N*   7 :N MNN$$$*M$      $$$777$8      8D8I*     NMM.:7O           777777778*                       7777777MN*                       M NO .7:*                       M   :   M*                            8*/// Constant matcher factory methodspublic ChineseUtils() {}private static final String PUNCTUATION = "\\pP";/**** <p>get chinese initail, if the first char is number return the number, if it is a polysyllabic character,* take only the first one, if the chinese initail is empty return {@param defaultValue}.<p/>** <pre>*  ChineseUtils.getChineseInitial("我爱中国"))   =  W*  ChineseUtils.getChineseInitial("爱中国"))    =  A*  ChineseUtils.getChineseInitial("1爱中国")    =  1*  ChineseUtils.getChineseInitial("中国"))     =  Z*  ChineseUtils.getChineseInitial("@#国"))       =  G*  ChineseUtils.getChineseInitial("国%$"))        =  G*  ChineseUtils.getChineseInitial("国"))      =  G*  ChineseUtils.getChineseInitial("W我爱中国"))  =  W*  ChineseUtils.getChineseInitial("I我爱中国"))  =  I*  ChineseUtils.getChineseInitial("null"))     =    N*  ChineseUtils.getChineseInitial(null))       =  ""*  ChineseUtils.getChineseInitial(""))         =     ""*  ChineseUtils.getChineseInitial(","))        = ""* <pre/>** @param chinese* @param defaultValue* @return the pinyin of first chinese char,if {@param chinese} is't chinese,return {@link StringUtils.EMPTY}.*/public static String getChineseInitialDefaultIfEmpty(String chinese, String defaultValue) {String result = getChineseInitial(chinese, true);return StringUtils.isEmpty(result) ? defaultValue : result;}/**** <p>get chinese initail, if the first char is number return the number, if it is a polysyllabic character,* take only the first one.<p/>** <pre>*  ChineseUtils.getChineseInitial("我爱中国"))   =  W*  ChineseUtils.getChineseInitial("爱中国"))    =  A*  ChineseUtils.getChineseInitial("1爱中国")    =  1*  ChineseUtils.getChineseInitial("中国"))     =  Z*  ChineseUtils.getChineseInitial("@#国"))       =  G*  ChineseUtils.getChineseInitial("国%$"))        =  G*  ChineseUtils.getChineseInitial("国"))      =  G*  ChineseUtils.getChineseInitial("W我爱中国"))  =  W*  ChineseUtils.getChineseInitial("I我爱中国"))  =  I*  ChineseUtils.getChineseInitial("null"))     =    N*  ChineseUtils.getChineseInitial(null))       =  ""*  ChineseUtils.getChineseInitial(""))         =     ""*  ChineseUtils.getChineseInitial(","))        = ""* <pre/>** @param chinese* @return the pinyin of first chinese char,if {@param chinese} is't chinese,return {@link StringUtils.EMPTY}.*/public static String getChineseInitial(String chinese) {return getChineseInitial(chinese, true);}/**** <p>get chinese initail, if the first char is number return the number, if it is a polysyllabic character,* take only the first one.<p/>** <pre>*  ChineseUtils.getChineseInitial("我爱中国")  =  W*  ChineseUtils.getChineseInitial("爱中国")     =  A*  ChineseUtils.getChineseInitial("1爱中国")    =  1*  ChineseUtils.getChineseInitial("中国")      =  Z*  ChineseUtils.getChineseInitial("@#国")        =  G*  ChineseUtils.getChineseInitial("国%$"      =  G*  ChineseUtils.getChineseInitial("国")           =  G*  ChineseUtils.getChineseInitial("W我爱中国")   =  W*  ChineseUtils.getChineseInitial("I我爱中国")   =  I*  ChineseUtils.getChineseInitial("null")      =    N*  ChineseUtils.getChineseInitial(null)        =  ""*  ChineseUtils.getChineseInitial("")          =     ""*  ChineseUtils.getChineseInitial(",")         = ""* <pre/>** @param chinese* @param removePunctuation is remove the punctuation in {@param chinese}.* @return the pinyin of first chinese char,if {@param chinese} is't chinese,return {@link StringUtils.EMPTY}.*/public static String getChineseInitial(String chinese, boolean removePunctuation) {// if need remove punctuation.if (removePunctuation) {chinese = removePunctuation(chinese);}// if chinese is blankif (StringUtils.isBlank(chinese)) {return StringUtils.EMPTY;}// first char.char firstChar = chinese.charAt(0);// if first char in [a-z,A-Z,0-9]if (CharUtils.isAsciiAlphanumeric(firstChar)) {return CharUtils.toString(firstChar).toUpperCase();}// if is chinese.boolean isChinese = CharUtils.toString(firstChar).matches("[\u4E00-\u9FA5]+");if (!isChinese) {return StringUtils.EMPTY;}// chinese to pinyin and get first char.try {String[] res = PinyinHelper.toHanyuPinyinStringArray(firstChar);return res[0].substring(0, 1).toUpperCase();} catch (Exception e) {LoggerUtil.warn("get " + chinese + " chinese initial fail.", e);}return StringUtils.EMPTY;}/*** <p>replace {@param str} punctuation to "", if {@param str} is empty , return {@link StringUtils.EMPTY}.</p>** <pre>*  ChineseUtils.removePunctuation(null)           =  ""*  ChineseUtils.removePunctuation("")             =  ""*  ChineseUtils.removePunctuation(" ")                =  ""*  ChineseUtils.removePunctuation("我爱中国")     =  我爱中国*  ChineseUtils.removePunctuation("我爱中国!")     =  我爱中国*  ChineseUtils.removePunctuation("我爱中国。")        =  我爱中国*  ChineseUtils.removePunctuation("我爱中国.")        =  我爱中国*  ChineseUtils.removePunctuation("  我爱中国.  ")    =  我爱中国* </pre>** @param str* @return string*/public static String removePunctuation(String str) {if (StringUtils.isEmpty(str)) {return StringUtils.EMPTY;}return str.trim().replaceAll(PUNCTUATION, StringUtils.EMPTY);}}

三、运行结果

    public static void main(String[] args) {System.out.println(ChineseUtils.getChineseInitial("我爱中国"));System.out.println(ChineseUtils.getChineseInitial("爱中国"));System.out.println(ChineseUtils.getChineseInitial("1爱中国"));System.out.println(ChineseUtils.getChineseInitial("中国"));System.out.println(ChineseUtils.getChineseInitial("@#国"));System.out.println(ChineseUtils.getChineseInitial("国%$"));System.out.println(ChineseUtils.getChineseInitial("国"));System.out.println(ChineseUtils.getChineseInitial("W我爱中国"));System.out.println(ChineseUtils.getChineseInitial("I我爱中国"));System.out.println(ChineseUtils.getChineseInitial("null"));System.out.println(ChineseUtils.getChineseInitial(null));System.out.println(ChineseUtils.getChineseInitial(""));System.out.println(ChineseUtils.getChineseInitial(","));}
W
A
1
Z
G
G
G
W
I
N
 https://pan.baidu.com/s/18R8DGiGAkHdtafYLBlTVvg   提取码: h4jm

【自然语言实战】·第二章(1.1)——获取词语首字字母相关推荐

  1. 基于python的界面自动化测试-基于Python语言的自动化测试实战第二章(上)

    原标题:基于Python语言的自动化测试实战第二章(上) 测试环境搭建 2.1 Windows 下的环境搭建 如果想要学习一门编程语言,对于新手来说只需到其官方网站上去下载最新版本安装即可,但对于想要 ...

  2. 数字图像处理:第二章 图象获取、显示、表示与处理

    第二章 图象获取.显示.表示与处理 图象获取是图象的数字化过程,显示则是将数字图象转化为适合人们使用的形式,而处理是通过软件对图象进行变换操作的过程. 目录 图象获取 图象显示 图象表示 图象处理 参 ...

  3. 2021-9-2 第二章 空间数据的获取 155319

    第二章 空间数据的获取 2.1 空间数据的内容与特征 2.1.1 地理空间数据的内容 数字线划数据(Digital Line Graph,DLG) ​ DLG:地形图上基础地理要素的矢量数据集,将空间 ...

  4. php 将中文字符转英文字母_PHP实现将汉字转换为拼音及获取词语首字母的方法...

    本文实例讲述了PHP实现将汉字转换为拼音及获取词语首字母的方法.分享给大家供大家参考,具体如下: 最近要开发将汉字转换为拼音和得到首字的功能记录下来哈子:呵呵~ class Pinyin{ priva ...

  5. JAVA获取字符串首字拼音和全拼

    JAVA获取字符串首字拼音或者全部拼音,用的是pinyin4j. import java.util.ArrayList; import java.util.Hashtable; import java ...

  6. linux VCS+verdi运行UVM实战(第二章)中的例子

    目录 前言 介绍 建立工程 运行代码 查看波形 总结 前言 用VCS+verdi运行了下UVM实战中的例子(第二章). 介绍 在某宝上花了几十块,买了个虚拟机(已经安装好VCS+verdi).直接用U ...

  7. 并发编程实战-第二章学习

    "共享"意味着变量可以由多个线程同时访问,而"可变"则意味着变量的值再其声明周期内可以发生变化. 如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那 ...

  8. 机器学习实战-第二章代码+注释-KNN

    #-*- coding:utf-8 -*- #https://blog.csdn.net/fenfenmiao/article/details/52165472 from numpy import * ...

  9. .NET Core IdentityServer4实战 第二章-OpenID Connect添加用户认证

    内容:本文带大家使用IdentityServer4进行使用OpenID Connect添加用户认证 作者:zara(张子浩) 欢迎分享,但需在文章鲜明处留下原文地址. 在这一篇文章中我们希望使用Ope ...

最新文章

  1. RDKit:计算不同分子或构象之间的RMSD
  2. pci中断号分配_西门子S7-200 SMART中断及中断指令概述
  3. JS实现表格Table动态添加删除行
  4. Oracle 11g 下载及安装教程
  5. Python实战-获取鼠标键盘事件
  6. MySQL函数笔记_MySQL笔记之数学函数详解
  7. 二十一天学通Java:调用对象为null值的引用
  8. x86汇编之任务切换
  9. SpreadJS 纯前端表格控件应用案例:立信智能审计云平台(SACP)
  10. python电子病历交接班系统_电子病历的进展
  11. golang报错:slice bounds out of range
  12. win2012+r2+php+mysql_Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程
  13. 说说在JAVA中使用Redis,以及Redis分布锁
  14. 【Sass/SCSS】我花4小时整理了的Sass的函数
  15. STL源码剖析(一)STL简介
  16. 不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事...
  17. 一文读懂——光纤通信技术
  18. AVI常用的压缩算法
  19. 大牌网站都在用的字体,专治选择困难症!|附字体
  20. 软件工程-需求工程-UML

热门文章

  1. 在《进击的巨人》中,你同情谁?
  2. 世界一流企业,谁不是靠模仿起家的?
  3. 电脑上计算机中的文档怎么变成格子样,电脑有的软件文字显示小方格是怎么回事?怎样解决?...
  4. 央视影音 服务器暂时无法连接服务器,央视影音APP播放不了怎样办 打开不知道决办法...
  5. 用 TensorFlow Extended 实现可扩展、快速且高效的 BERT 部署 (一)
  6. allegro问题总结记录
  7. 超级右键--Mac上最强的右键菜单工具
  8. vscode搭建opencv4.5.5+opencv_contrib4.5.5开发环境
  9. 使用FRP进行内网穿透的最佳实践
  10. 南方iData数据工厂(一个平台,一套数码,一体化生产):构建基础空间数据的好平台