首页 > 其他分享 >中文转换拼音工具类(pinyin4j)

中文转换拼音工具类(pinyin4j)

时间:2025-01-14 14:44:37浏览次数:1  
标签:pinyinArray outputFormat 拼音 pinyin4j 中文 String result name

中文转换拼音工具类,使用pinyin4j库

一、依赖如下:

<dependency>
                <groupId>com.belerweb</groupId>
                <artifactId>pinyin4j</artifactId>
                <version>2.5.0</version>
            </dependency>

二、工具类代码:

package com.ruoyi.system.utils;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.springframework.stereotype.Component;

/**
 * 中文转换拼音工具类
 */
@Component
public class PinyinUtil {

    /**
     * 获取中文全拼
     *
     * @param name 需要转换的中文
     * @return 全拼结果
     **/
    public static String getFullPinyin(String name) {
        // 创建格式化对象
        HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
        //设置大小写格式
        outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        //设置声调格式
        outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        // 放置输入结果
        StringBuilder result = new StringBuilder();
        // 字符数组
        char[] charArray = name.toCharArray();
        // 遍历字符
        for (char c : charArray) {
            // 中文会被变成全拼,非中文会被直接拼接在结果字符串中
            if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
                String[] pinyinArray = new String[0];
                try {
                    pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, outputFormat);
                } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
                    badHanyuPinyinOutputFormatCombination.printStackTrace();
                }
                if (pinyinArray != null) {
                    result.append(pinyinArray[0]);
                }
            } else {
                result.append(c);
            }
        }
        return result.toString();
    }

    /**
     * 获取中文首字母
     *
     * @param name 需要转换的中文
     * @return 首字母结果
     **/
    public static String getPinyinInitial(String name) {
        // 创建格式化对象
        HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
        //设置大小写格式
        outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        //设置声调格式
        outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        // 放置输入结果
        StringBuilder result = new StringBuilder();
        // 字符数组
        char[] charArray = name.toCharArray();
        // 遍历字符
        for (char c : charArray) {
            // 中文会被变成拼音首字母,非中文会被直接拼接在结果字符串中
            if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
                String[] pinyinArray = new String[0];
                try {
                    pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, outputFormat);
                } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
                    badHanyuPinyinOutputFormatCombination.printStackTrace();
                }
                if (pinyinArray != null) {
                    result.append(pinyinArray[0].charAt(0));
                }
            } else {
                result.append(c);
            }
        }
        return result.toString();
    }

    public static void main(String[] args) {
        String name = "刘德华"; // 输入的中文姓名
        String pinyin = getFullPinyin(name);
        System.out.println("姓名:" + name + " 的拼音为:" + pinyin);
    }
}

标签:pinyinArray,outputFormat,拼音,pinyin4j,中文,String,result,name
From: https://www.cnblogs.com/xiaoguo-java/p/18670730

相关文章

  • 中文领域确实存在一些与OpenBookQA类似的问答数据集
    中文领域确实存在一些与OpenBookQA类似的问答数据集,这些数据集旨在促进机器阅读理解和问答系统的研究和发展。以下是几个值得注意的中文问答数据集:cMedQA和cMedQA2:这两个数据集专注于医疗领域的问答任务,包含大量的医学相关问题及其对应的回答。具体来说,cMedQA包含大约5......
  • 《废品机械师抢先版》V0.7.3.b776官方中文学习版
    《废品机械师抢先版》官方中文版https://pan.xunlei.com/s/VODaeeHvgXUAgJbj2b1-3DR6A1?pwd=wwdv#生存模式!在生存模式中,机械师探索一个充满敌人、宝藏和危险机器人的动态生成的开放世界环境!与朋友组队,建立基地来保护自己和贵重物品。最有创造力的人会活下来!挑战模式!在机械......
  • Mac电脑如何安装Xmind 2025 中文思维导图软件?
    Mac电脑如何安装Xmind2025中文思维导图软件?介绍Xmind,是一款出色的思维导图和头脑风暴软件,拥有美观的智能配色方案,便于你轻松理清思路捕捉创意。丰富的导图模板及多种创意整合工具,可助力导图迸发更多活力。还拥有强大演说模式,及提供Markdown、SVG、PNG、PDF、Office等......
  • Mac电脑如何安装 Axure RP 10 原型设计软件 中文激活版?
    Mac电脑如何安装AxureRP10原型设计软件中文激活版?介绍AxureRP10forMac,是一个专业的原型设计和线框图工具,广泛应用于用户体验设计(UX)和用户界面设计(UI)领域,为设计师、产品经理、开发人员提供了强大的功能,帮助其在项目早期阶段快速创建互动原型和详细的设计文档。软......
  • Mac电脑如何安装Xmind 2025 中文思维导图软件?
    Mac电脑如何安装Xmind2025中文思维导图软件?介绍Xmind,是一款出色的思维导图和头脑风暴软件,拥有美观的智能配色方案,便于你轻松理清思路捕捉创意。丰富的导图模板及多种创意整合工具,可助力导图迸发更多活力。还拥有强大演说模式,及提供Markdown、SVG、PNG、PDF、Office等......
  • Mac电脑如何安装 Axure RP 10 原型设计软件 中文激活版?
    Mac电脑如何安装AxureRP10原型设计软件中文激活版?介绍AxureRP10forMac,是一个专业的原型设计和线框图工具,广泛应用于用户体验设计(UX)和用户界面设计(UI)领域,为设计师、产品经理、开发人员提供了强大的功能,帮助其在项目早期阶段快速创建互动原型和详细的设计文档。软......
  • WINRAR自动查找官方最新中文无广告版并下载脚本
    importrequestsimportrefromdatetimeimportdatetime,timedelta#目标网页URLurl='https://www.rarlab.com/'#发送HTTPGET请求获取网页内容response=requests.get(url)response.raise_for_status()#确保请求成功#使用正则表达式查找连接文字为“C......
  • 移植Android百度OCR:百度超轻量级中文OCR Android模型整合到自有工程中的问题与解决
    文章目录移植百度超轻量级中文OCR模型到Android项目的踩坑经历步骤一:下载并准备模型工程目录简介TestInferOcrTask步骤二:问题总结软件闪退识别结果为空log日志一直提示权限未赋予步骤三解决方案总结参考资料移植百度超轻量级中文OCR模型到Android项目的踩坑经历......
  • [Linux]Arch 中文输入法
    ArchLinux可以安装安装fcitx5 实现输入中文,具体步骤如下sudopacman-Sfcitx5-imsudopacman-Sfcitx5-chinese-addonsfcitx5-rime其中fcitx5-chinese-addons 包含了大量中文输入方式:拼音、双拼、五笔拼音、自然码、仓颉、冰蟾全息、二笔等fcitx5-rime 对经典......
  • AI Agent(智能体)技术白皮书(Google,2024)中文+英文
    译者序本文翻译自2024年Google团队的一份 Agents白皮书,作者JuliaWiesinger,PatrickMarlow,VladimirVuskovic。Agent可以理解为是一个扩展了大模型出厂能力的应用程序。工具的使用,是人类区别于动物的标志——也是Agent区别于大模型的标志。水平及维护精力所......