Pinyin4j介绍和简单使用
前言
Pinyin4j是一个Java库,用于将汉字转换为拼音。它是由中国清华大学的Tsinghua University和中国科学院计算技术研究所的研究人员开发的。Pinyin4j可以用于Java应用程序中,以便在需要时将汉字转换为拼音。例如,它可以用于中文输入法、文本编辑器、搜索引擎等。
这是它的具体网站,感兴趣的,可以自己去看一下
https://pinyin4j.sourceforge.net/
具体安装过程
-
在Maven官网去查询
-
引入相关依赖
<!-- 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));}
}相关文章:
Pinyin4j介绍和简单使用
前言 Pinyin4j是一个Java库,用于将汉字转换为拼音。它是由中国清华大学的Tsinghua University和中国科学院计算技术研究所的研究人员开发的。Pinyin4j可以用于Java应用程序中,以便在需要时将汉字转换为拼音。例如,它可以用于中文输入法、文本…...
【数据结构】查找
【数据结构】查找 数据结构中,有顺序查找、二分查找、散列查找、插值查找、斐波那契额查找 1.顺序查找 条件:待查找的元素与数组中的元素按顺序排列。算法:从数组的第一个元素开始,逐个比较,直到找到目标元素或遍历完…...
第一次面试
1.多态的原理 2.编译原理 3.HTTPS的加密原理 4.说一说C11新特性 5.平时用过哪些STL容器 6.STL的比较器 原来就是自定义工具类hhhhhh 7.函数指针用过吗 8.I/O多路复用 9.Redis 问的基本都背过,但是一紧张啥都忘了hhhhhhhhh...
Nacos配置文件更新+热更新+多环境配置共享+集群搭建
对服务配置文件 场景: 如果多个服务对应的配置文件都需要更改时,可以利用配置管理,方便对配置文件进行更新,而且是在本地配置前先读取nacos的配置文件,优先级大于本地配置文件 配置步骤 1.首先在Nacos中的配置列表中增…...
李宏毅-机器学习hw4-self-attention结构-辨别600个speaker的身份
一、慢慢分析学习pytorch中的各个模块的参数含义、使用方法、功能: 1.encoder编码器中的nhead参数: self.encoder_layer nn.TransformerEncoderLayer( d_modeld_model, dim_feedforward256, nhead2) 所以说,这个nhead的意思,就…...
记一次使用NetworkManager管理Ubuntu网络无效问题分析
我们都知道CentOS、Redhat系列网络配置比较连贯,要么在/etc/sysconfig/network-scripts/ifcfg-网络设备名,文件中编辑后,重启网络服务;要么使用nmtui或者nmcli进行配置。但是,Ubuntu变动就比较大: 早期版本…...
Nginx重写功能
Nginx重写功能 一、Nginx常见模块二、访问路由location2.1location常用正则表达式2.2、location的分类2.3、location常用的匹配规则2.4、location优先级排列说明2.5、location示例2.6、location优先级总结2.7、实例2.7.1、location/{}与location/{}2.7.2、location/index.html{…...
王道考研计算机网络
文章目录 计算机网络体系结构计算机网络概述计算机网络的性能指标 计算机网络体系结构与参考模型错题 物理层通信基础基础概念奈奎斯特定理和香农定理编码与调制电路交换、报文交换和分组交换数据报与虚电路 传输介质物理层设备错题 数据链路层数据链路层的功能组帧差错控制检错…...
数据链路层重点协议-以太网
以太网简介 "以太网" 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了 一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等; 以太网数据帧…...
学习计划
白驹过隙,转眼已是大二。新学期,新气象,新计划。 一、专业学习方面 学习vue、spring boot、redis、MybatisPlus、Elasticsearch、ssm框架,完成项目的编写,思考复盘。 二、读书方面 因为我大概率会走前端方向࿰…...
RabbitMQ的RPM包安装和Python读写操作
下载地址 ## erlang 下载地址 https://packagecloud.io/rabbitmq/erlang?page6## rabbitmq 下载地址 https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.29-1.el7.noarch.rpm?distro_version_id140 Rabbitmq的RPM包安装 ## 下载 wget -…...
文件上传漏洞案例
目录 1.案例一 1)案例源码 2)创建web.php文件 3)使用抓包软件 2.案例二 1)案例代码 2) 案例分析 3)copy命令生成图片马 4)上传图片马到服务器 5)解析 文件图片 3.案例三 …...
Office365 Excel中使用宏将汉字转拼音
Office365 Excel中开启宏 文件 - 选项 - 信任中心 - 信任中心设值 - 宏设值 启用VBA宏启用VBA宏时启用Excel 4.0宏信任对VBA工程对象模型的访问 创建宏 视图 - 查看宏 填写名字创建宏:getpy填入下面代码保存,点击否,另存类型为“excel启…...
baichuan2(百川2)本地部署的实战方案
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...
PostgreSQL配置主从备份(docker)
一、服务器规划 序号 IP 备注 1192.168.1.110主数据库2192.168.1.120从数据库 二、服务器部署 2.1、主服务器部署(192.168.1.110) 1)、于/opt/postgresql目录下,编辑docker-compose.yml version: "3" services:po…...
qt作业day4
//clock_exercise.cpp#include "clock_timer.h" #include "ui_clock_timer.h"//时间事件处理函数 void Clock_Timer::timerEvent(QTimerEvent *event) {if(event->timerId() time_id){sys_tm QDateTime :: currentDateTime(); // int year sy…...
js如何实现字符串反转?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 split() 和 reverse() 方法⭐ 使用循环⭐ 使用递归⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专…...
Nmap 7.94 发布:新功能!
Nmap 的最新版本 7.94 在其 26 岁生日之际发布。 最重要的升级是在所有平台上将 Zenmap 和 Ndiff 从 Python 2 迁移到 Python 3。 这个新版本的 Nmap 7.94 进行了升级,进行了多项改进,修复了一些关键错误,并添加了新的 Npcap、操作系统指纹…...
【深入解析spring cloud gateway】08 Reactor 知识扫盲
一、响应式编程概述 1.1 背景知识 为了应对高并发服务器端开发场景,在2009 年,微软提出了一个更优雅地实现异步编程的方式——Reactive Programming,我们称之为响应式编程。随后,Netflix 和LightBend 公司提供了RxJava 和Akka S…...
常用ADB指令
ADB指令 1.查看版本 adb shell getprop|findstr fingerprint 2.查看应用包名 adb shell pm list packages 3.查看系统关键字 adb shell getprop|findstr oem/sn/user… 4.查看进程id adb shell ps -ef |grep appstore 5.启动服务 adb shell am startservice -n com.a…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
