吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2156|回复: 12
收起左侧

[Java 原创] Java工具类——汉字转拼音

  [复制链接]
wangbyn 发表于 2022-11-16 17:53
本帖最后由 wangbyn 于 2022-11-16 17:56 编辑

写了一个根据汉字获取拼音字符串的工具类,需要用到pinyin4j-2.5.0.jar包。
废话不多说上代码。

[Java] 纯文本查看 复制代码
package com.xxx.util;
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.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

/**
 * 根据汉字获取拼音处理
 * @AuThor wangbyn
 */
public class GetPinyin {

        /**
         * 得到 全拼
         * @Param src
         * @return
         */
        public static String getPingYin(String src) {
                char[] t1 = null;
                t1 = src.toCharArray();
                String[] t2 = new String[t1.length];
                HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
                t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
                t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
                t3.setVCharType(HanyuPinyinVCharType.WITH_V);
                StringBuffer t4 = new StringBuffer();
                int t0 = t1.length;
                try {
                        for (char c : t1) {
                                // 判断是否为汉字字符
                                if (Character.toString(c).matches(
                                                "[\\u4E00-\\u9FA5]+")) {
                                        t2 = PinyinHelper.toHanyuPinyinStringArray(c, t3);
                                        t4.append(t2[0]);
                                } else {
                                        t4.append(Character.toString(c));
                                }
                        }
                        return t4.toString();
                } catch (BadHanyuPinyinOutputFormatCombination e1) {
                        e1.printStackTrace();
                }
                return t4.toString();
        }

        /**
         * 得到中文首字母
         * @param str
         * @return
         */
        public static String getPinYinHeadChar(String str) {

                StringBuffer convert = new StringBuffer();
                for (int j = 0; j < str.length(); j++) {
                        char word = str.charAt(j);
                        String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
                        if (pinyinArray != null) {
                                convert.append(pinyinArray[0].charAt(0));
                        } else {
                                convert.append(word);
                        }
                }
                return convert.toString();
        }


        public static void main(String[] args) {

                String cnStr = "俺没有文化";
                System.out.println(getPingYin(cnStr));
                System.out.println(getPinYinHeadChar(cnStr));
        }

}



运行结果

运行结果

免费评分

参与人数 2吾爱币 +3 热心值 +2 收起 理由
jessepengpeng + 1 用心讨论,共获提升!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

sopcast 发表于 2022-11-16 20:02
感谢分享不错!谢谢
matrixsky 发表于 2022-11-16 20:27
renzhanxin 发表于 2022-11-16 21:00
guiyuandaren 发表于 2022-11-16 21:07
请问一下像饥饿 转成拼音会不会有误解
iYoutudou 发表于 2022-11-16 21:09
感谢分享不错!谢谢楼至
愷龍 发表于 2022-11-16 21:20
感谢楼主的分享!
yippee 发表于 2022-11-16 22:00
谢谢楼主分享
mokson 发表于 2022-11-17 08:06
拼音之间没有分隔开,难以识别。
justyvan 发表于 2022-11-17 23:54

学习了,谢谢分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-6-5 11:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表