Java 姓名转换拼音(支持单音多音字)

该博客介绍了如何在Java中利用Pinyin4j库进行汉字转拼音的处理,包括添加Maven依赖,创建拼音工具类以及展示实际转换效果。在调试部分,展示了将字符串"王行藏度阿都为兴重朝"转换为拼音的结果,并在项目接口返回的Json场景中,列出了每个汉字对应的拼音数组。
摘要由CSDN通过智能技术生成

1. 引入pom依赖

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

2. 拼音工具类

public class PinYinUtil {

    private PinYinUtil(){
        throw new IllegalStateException("Utility class");
    }

    private static final int ASCII_MIN_SIZE = 32;

    private static final int ASCII_MAX_SIZE = 125;

    /**
     * @Description: 汉字转换方法(数字与字母不转换)
     * @param ch: 单个字符
     * @return: java.lang.String[]
     **/
    public static String[] getPinyin(char ch) {
        try {
            HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
            outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
            outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
            //ASCII >=33 ASCII<=125的直接返回 ,ASCII码表:http://www.asciitable.com/
            if (ch >= ASCII_MIN_SIZE && ch <= ASCII_MAX_SIZE) {
                return new String[]{String.valueOf(ch)};
            }
            return distinct(PinyinHelper.toHanyuPinyinStringArray(ch, outputFormat));
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            throw new IllegalStateException(e);
        }
    }

    private static String[] distinct(String[] arr) {
        if (arr == null || arr.length == 0) {
            return arr;
        }
        HashSet<String> set = new HashSet<>();
        for (String str : arr) {
            set.add(str);
        }
        return set.toArray(new String[0]);
    }

}

3. 调试

public static void main(String[] args) {
   String str = "王行藏度阿都为兴重朝";
   char[] chs = str.toCharArray();
   for(char ch : chs){
      System.out.println(ch+"\t"+ Arrays.toString(PinYinUtil.getPinyin(ch)));
   }
}

4. 运行结果

5. 项目接口返回Json场景

{
    "errorCode": "0",
    "errorMsg": "success",
    "data": [
        [
            "wang"
        ],
        [
            "xing",
            "hang",
            "heng"
        ],
        [
            "zang",
            "cang"
        ],
        [
            "du",
            "duo"
        ],
        [
            "a",
            "e"
        ],
        [
            "du",
            "dou"
        ],
        [
            "wei"
        ],
        [
            "xing"
        ],
        [
            "zhong",
            "chong"
        ],
        [
            "zhao",
            "chao"
        ]
    ]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值