Pinyin4j介绍和简单使用

前言

Pinyin4j是一个Java库,用于将汉字转换为拼音。它是由中国清华大学的Tsinghua University和中国科学院计算技术研究所的研究人员开发的。Pinyin4j可以用于Java应用程序中,以便在需要时将汉字转换为拼音。例如,它可以用于中文输入法、文本编辑器、搜索引擎等。

这是它的具体网站,感兴趣的,可以自己去看一下
https://pinyin4j.sourceforge.net/

具体安装过程

  1. 在Maven官网去查询

  2. 引入相关依赖

java 复制代码
<!-- https://mvnrepository.com/artifact/com.belerweb/pinyin4j -->
<dependency>
    <groupId>com.belerweb</groupId>
    <artifactId>pinyin4j</artifactId>
    <version>2.5.1</version>
</dependency>

简单一些用法

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

java 复制代码
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中,返回即可

具体代码如下:

java 复制代码
    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));
    }
}
相关推荐
guodingdingh12 小时前
软件开发工作问题总结0718
java·开发语言·数据库
咖啡八杯14 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育14 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
糖果店的幽灵14 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
腻害兔16 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
SeaTunnel16 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
碎光拾影16 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Marst Code17 小时前
(python)2026Plotly 库评估:交互式可视化到底值不值得引入?
开发语言·python
Miao1213117 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
腻害兔17 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:支付模块 yudao-module-pay,一个让产品经理都看懂的支付中台设计
java·前端·vue.js·产品经理·ai编程