当前位置: 首页 > news >正文

Pinyin4j介绍和简单使用

前言

Pinyin4j是一个Java库,用于将汉字转换为拼音。它是由中国清华大学的Tsinghua University和中国科学院计算技术研究所的研究人员开发的。Pinyin4j可以用于Java应用程序中,以便在需要时将汉字转换为拼音。例如,它可以用于中文输入法、文本编辑器、搜索引擎等。
这是它的具体网站,感兴趣的,可以自己去看一下
https://pinyin4j.sourceforge.net/

具体安装过程

  1. 在Maven官网去查询

  2. 引入相关依赖

<!-- https://mvnrepository.com/artifact/com.belerweb/pinyin4j -->
<dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.1</version>
</dependency>

简单一些用法

其实Pinyin4j的简单用法,实际它的核心类就是PinyinHelper类,我接下来会展示一个简单的api使用方法.

public class PinyinTest01 {public static void main(String[] args) {//1.展示单个汉字的字母拼写String[] res1=PinyinHelper.toHanyuPinyinStringArray('长');System.out.println(Arrays.toString(res1));String[] s = PinyinHelper.toHanyuPinyinStringArray('中');System.out.println(Arrays.toString(s));}
}

大家可以看见,我们上面的api方法,是可以获取到单个字符的拼写的.但为什么我们不直接获取一个字符串的拼写呢?
我去查了这个Pinyin4官网的api.发现了这样的一个事实
在这里插入图片描述
发现该方法已经被删除了,所以针对我们接下来做的文件搜索项目,我们要封装一下这个工具类,让它能够输入具体的字符串进行拼音转换.具体的思路如下:
我们首先要知道,我们要进行拼音转换首先要分为两种情况:1.全拼.2.首字符拼音
具体的步骤如下:
1.首先遍历字符串
2.遍历字符串之后,把每个字符串单独转译
3.转换之后的字符串保存到stringBuffer中,返回即可

具体代码如下:

    public static String get(String src,boolean fullSpell){//1.如果是空字符串,则不处理.if (src == null && src.trim().length() ==0){return null;}//针对Pinyin4j 做出配置,就是针对lu的lv的配置 ->使用v来配置,HanyuPinyinOutputFormat format=new HanyuPinyinOutputFormat();format.setVCharType(HanyuPinyinVCharType.WITH_V);//2.如果字符串非空//遍历字符串的每个字符串,针对每个字符串进行转换,把转换得到的结果,拼接到StringBuilder里面StringBuffer stringBuffer=new StringBuffer();for (int i=0;i<src.length();i++){char ch=src.charAt(i);String[] tmp=null;try {tmp= PinyinHelper.toHanyuPinyinStringArray(ch,format);} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}if (tmp == null || tmp.length ==0){//如果是空的字符,就说明转换失败了.//如果输入的字符,没有汉语拼音,自然就会转换失败.//保留原始字符,加入结果中stringBuffer.append(ch);}else if(fullSpell){//拼音结果为true,我们stringBuffer.append(tmp[0]);}else {//拼音结果为false//比如 卡 =["ka","qia"] 此时取0号元素,得到了"ka",再取0号字符stringBuffer.append(tmp[0].charAt(0));}}return stringBuffer.toString();}public static void main(String[] args) {System.out.println(get("长",true));System.out.println(get("彘二",true));System.out.println(get("彘二",false));System.out.println(get("⻓还",true));System.out.println(get("绿鲤⻥",true));System.out.println(get("abc",true));System.out.println(get("中华⼈⺠共和国",false));System.out.println(get("⻓还",false));System.out.println(get("abc",false));
//        System.out.println(get("中华⼈⺠共和国",true));System.out.println(get("中华人民共和国",true));}
}
http://www.lryc.cn/news/161609.html

相关文章:

  • 【数据结构】查找
  • 第一次面试
  • Nacos配置文件更新+热更新+多环境配置共享+集群搭建
  • 李宏毅-机器学习hw4-self-attention结构-辨别600个speaker的身份
  • 记一次使用NetworkManager管理Ubuntu网络无效问题分析
  • Nginx重写功能
  • 王道考研计算机网络
  • 数据链路层重点协议-以太网
  • 学习计划
  • RabbitMQ的RPM包安装和Python读写操作
  • 文件上传漏洞案例
  • Office365 Excel中使用宏将汉字转拼音
  • baichuan2(百川2)本地部署的实战方案
  • PostgreSQL配置主从备份(docker)
  • qt作业day4
  • js如何实现字符串反转?
  • Nmap 7.94 发布:新功能!
  • 【深入解析spring cloud gateway】08 Reactor 知识扫盲
  • 常用ADB指令
  • 【HTML5高级第二篇】WebWorker多线程、EventSource事件推送、History历史操作
  • CentOS云服务器部署配置
  • 深入解析Java中的数组复制:System.arraycopy、Arrays.copyOf和Arrays.copyOfRange
  • libc和glibc有什么区别
  • 基于SSM的在线云音乐系统
  • 构建高效的BFF(Backend for Frontend):优化前端与后端协作
  • 喜报 | 实力亮相2023服贸会,擎创科技斩获领军人物奖创新案例奖
  • 科技革新自动驾驶:拓世AI智能助理携手跟您一起点亮未来之旅
  • 【HCIE】01.IGP高级特性
  • 知识大杂烩(uniapp)
  • Jmeter压测监控体系搭建Docker+Influxdb+Grafana