SpringBoot 中文转拼音 Pinyin4j库 拼音转换 单据管理 客户管理

介绍

在客户管理系统中部分客户的名字会有生僻字为了沟通时候不叫错客户的名称,因此决定将客户名称的拼音一起返回给前端,也可以直接交给前端去处理。这里介绍后端的做法

Pinyin4j 是一个用于将汉字转换为拼音的 Java 库。在需要对中文文本进行拼音转换、拼音排序、拼音检索等功能。

依赖

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

工具类

public class PinYinUtils {

    /**
     * 将中文转换为拼音
     *
     * @param chinese 中文字符串
     * @return 拼音字符串
     */
    public static String toPinyin(String chinese) {

        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();

        /**setVCharType: 设置拼音中“ü”的输出方式。
         *   HanyuPinyinVCharType.WITH_U_AND_COLON: 输出为“u:”(例如“ü”变成“u:”)
         *   HanyuPinyinVCharType.WITH_V: 输出为“v”(例如“ü”变成“v”)
         *   HanyuPinyinVCharType.WITH_U_UNICODE: 输出为“ü”字符(例如“ü”保持不变)
        * */
        format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);


    /**setToneType: 设置声调的类型,常见的类型有:
     * HanyuPinyinToneType.WITH_TONE_MARK: 带声调标记(例如“pī”)
     * HanyuPinyinToneType.WITHOUT_TONE: 不带声调(例如“pi”)
     * HanyuPinyinToneType.WITH_TONE_NUMBER: 使用数字表示声调(例如“pi1”)
     * */
        format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);


        /***
         * HanyuPinyinCaseType.UPPERCASE: 大写字母
         * HanyuPinyinCaseType.LOWERCASE: 小写字母
         */
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);



        StringBuilder pinyin = new StringBuilder();
        for (char c : chinese.toCharArray()) {
            /***
             * ^[\u2E80-\u9FFF]+$ 匹配所有东亚区的语言
             * ^[\u4E00-\u9FFF]+$ 匹配简体和繁体
             * ^[\u4E00-\u9FA5]+$ 匹配简体
             */
            if (Character.toString(c).matches("[\\u4E00-\\u9FFF]")) { // 判断是否为中文
                try {
                    String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
                    if (pinyinArray != null && pinyinArray.length > 0) {
                        pinyin.append(pinyinArray[0]).append(" ");;
                    }
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            } else {
                pinyin.append(c);
            }
        }
        return pinyin.toString();
    }

}

使用

System.out.println(PinYinUtils.toPinyin("马冬梅"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生产队的驴.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值