• 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>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    简单一些用法

    其实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));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    大家可以看见,我们上面的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));
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
  • 相关阅读:
    【Java中23种面试常考的设计模式之享元模式(Flyweight)---结构型模式】
    【JavaWeb的从0到1构建知识体系(六)】认识Mybatis(下)
    mysql数据库root密码忘记了,这里有一个简单的方法可以解决
    用户考试分数大于单科科目平均分的查询
    面向对象编程(高级部分)——final关键字
    二叉树的最大宽度(BFS)
    基于SQL布尔盲注与联合查询的WEB渗透
    带你走进linux 内核 定时器(timer)实现机制
    蓝桥杯2022年第十三届决赛真题-围栏(求凸多边形的面积)
    Flink系列之Flink中Broadcast和Counter整理和实战
  • 原文地址:https://blog.csdn.net/qq_45726327/article/details/132677104