Java汉语转拼音首字母并大写利用Pinyin4j(多音字识别)(中午括号识别)
<dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.1</version></dependency>
引入pinyin4j依赖
直接上Util类
/*** @author shangxichen* @date 2020-03-13*/
public class PinyinUtil {private static Map<String, String> map = new HashMap<>();private static final Logger logger= LoggerFactory.getLogger(PinyinUtil.class);private static void initMap() {try (InputStream is = PinyinUtil.class.getClassLoader().getResourceAsStream("cn_en_punc.txt");BufferedReader reader = new BufferedReader(new InputStreamReader(is));) {String keyword;while ((keyword = reader.readLine()) != null) {String[] temp = keyword.split(" ");map.put(temp[0], temp[1]);}} catch (IOException e) {logger.error("加载cn_en_punc.txt失败: " + e.getMessage());}}/*** 将汉字转成拼音* <p>* 取首字母或全拼** @param chinese 汉字字符串* @return 拼音*/private static String getUpperInitials(String chinese) {/**** ^[\u2E80-\u9FFF]+$ 匹配所有东亚区的语言* ^[\u4E00-\u9FFF]+$ 匹配简体和繁体* ^[\u4E00-\u9FA5]+$ 匹配简体*/initMap();String regExp = "^[\u4E00-\u9FFF]+$";String regMarks="[\\u3002\\uff1b\\uff0c\\uff1a\\u201c\\u201d\\uff08\\uff09\\u3001\\uff1f\\u300a\\u300b]";StringBuffer sb = new StringBuffer();if (StringUtils.isBlank(chinese)) {return "";}String pinyin = "";for (int i = 0; i < chinese.length(); i++) {char unit = chinese.charAt(i);if (match(String.valueOf(unit), regExp)) {pinyin = convertSingleChinese2Pinyin(unit);sb.append(pinyin.toUpperCase().charAt(0));}else if(match(String.valueOf(unit),regMarks)) {String value=map.get(String.valueOf(unit));sb.append(StringUtils.isBlank(value) ? unit : value);} else {sb.append(unit);}}return sb.toString();}/*** 将单个汉字转成拼音** @param chinese 汉字字符* @return 拼音*/private static String convertSingleChinese2Pinyin(char chinese) {HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);String[] res;StringBuffer sb = new StringBuffer();try {res = PinyinHelper.toHanyuPinyinStringArray(chinese, outputFormat);//对于多音字,只用第一个拼音sb.append(res[0]);} catch (Exception e) {e.printStackTrace();return "";}return sb.toString();}/**** 匹配* <P>* 根据字符和正则表达式进行匹配** @param str 源字符串* @param regex 正则表达式** @return true:匹配成功 false:匹配失败*/private static boolean match(String str, String regex) {Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(str);return matcher.find();}/*** 测试方法*/public static void main(String[] args) {System.out.println(getUpperInitials("音调 good ((0),,音。.乐 乐 调侃"));}
}
Java汉语转拼音首字母并大写利用Pinyin4j(多音字识别)(中午括号识别)相关推荐
- java汉字的拼音首字母_Java 获取汉字的拼音首字母
Java 获取汉字的拼音首字母: pom.xml 引用 pinyin4j 包: com.belerweb pinyin4j 2.5.0 PinyinUtil 类: package com.xxx.co ...
- java取汉字拼音首字母含多音字及不常见的字
package com.anxin.ssk.common;import java.io.UnsupportedEncodingException; import java.util.HashMap; ...
- java 获取中文拼音首字母(缩写)
第一种: 直接上代码(有个别中文无法识别): import java.io.UnsupportedEncodingException; /*** * @author yuki_ho**/ public ...
- java获取汉字拼音首字母A
public class GetChinessFirstSpell{ /// <summary> /// 汉字拼音首字母列表 本列表包含了20901个汉字,用于配合 GetChineseS ...
- java 汉字基于拼音首字母检索
最近接手根据拼音首字母来检索中文的小功能, 比如输入A 可以把客户姓氏的第一个字的拼音首字母为A的全部检索出来 相信基本在一些应用站点上都可以看的到. 之前没有写过类似的功能.刚拿到的时候也很郁闷.. ...
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字)
AutoCompleteTextView具有输入提示的功能,但是它的这种提示不适合对股票列表的过滤,如果你玩过股票软件,就会知道只要输入股票名称的首字母或股票代码就会出现符合匹配的股票,这种过滤怎么实 ...
- 【关于工具类的使用】中文拼音首字母转换为大写
业务场景:在我们实际业务开发中,会遇到生成较为开放类型的活动编号等,有对应的生成规则,比如需要将当前参与用户人名的中文拼音的首字母大小写取到,在加上时间戳信息等等.这里应用到一个解决方案. 1.导入相 ...
- java汉字转换为拼音首字母
使用 pinyin4j 2.5.0.jar 进行解决.封装了一个工具类 package com.util;import net.sourceforge.pinyin4j.PinyinHelper; i ...
- Java实现根据拼音首字母的排序
1.项目 手机APP端要对企业列表按企业名称首字母(如果企业名是英文的就按)进行分类排序,效果如下: 2.实现过程 2.1 首先引入项目的pinyin4j-2.5.0.jar包. 这个jar的下载地址 ...
最新文章
- plt.scatter参数详解 s=25代表点的面积
- python代码写完怎么运行-教你如何编写、保存与运行 Python 程序
- Connect 2016过后,你的信仰势必需要更大的容器
- mysql二阶段提交有什么问题_MySQL的事务两阶段提交的技术有什么意义?
- header python 环境信息_【关于header信息的构造】Python模拟登录出现乱码
- 神经网络快速搭建之一站式访问
- 北大教授李忠:谁说学数学只是为了升学?数学可以让你受益终生!
- Currency Exchange (POJ 1860)
- 工具包:Safetype Config使用
- 【转】Numpy三维数组的转置与交换轴
- 卷积云神经网络_有卷积云的北京天空好美!是不是还有池化云?全连接云?
- Java练习 SDUT-2561_九九乘法表
- selenium+phantomjs截长图踩坑
- 电力系统分析设计matlab,电力系统分析课程设计-基于Matlab的电力系统潮流计算...
- 日文翻译-在线免费日文翻译软件
- 医院排队系统排队叫号系统
- 简明外贸报价单(Price List)范本
- idea全局搜索替换快捷键
- 【微机原理作业】8086存储器读写实验
- 制图综合,制图综合的影响因素?