2025年java之将汉字转为拼音

java之将汉字转为拼音一 导入依赖 拼音依赖 lt dependency gt lt groupId gt com belerweb groupId lt artifactId gt pinyin4j artifactId lt version gt 2 5 1 lt

大家好,我是讯享网,很高兴认识大家。

一、导入依赖

 <!-- 拼音依赖 --> <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.1</version> </dependency> 

讯享网

二、新建工具类PingYinUtils(直接粘贴)

讯享网package com.aliyun.vuelogin.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; public class PingYinUtils { 
    public static HanyuPinyinOutputFormat PINYIN_FORMAT; static { 
    PINYIN_FORMAT = new HanyuPinyinOutputFormat(); / * 大小写设置 LOWERCASE:小写 UPPERCASE:大写 */ PINYIN_FORMAT.setCaseType(HanyuPinyinCaseType.LOWERCASE); / * 输出音标设置 * * WITH_TONE_MARK:直接用音标符(VCharType必须设置WITH_U_UNICODE,否则会抛出异常) * WITH_TONE_NUMBER:1-4数字表示音标 WITHOUT_TONE:没有音标 */ PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE); / * 特殊音符ü的设置 WITH_U_AND_COLON:用u表示(没有设置默认用u表示) WITH_V:用v表示 * WITH_U_UNICODE:用ü表示 */ PINYIN_FORMAT.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); } / * 取汉字的拼音首字母 * * @param chinese * @return */ public static String toFirstPinYin(String chinese) { 
    StringBuilder result = new StringBuilder(); // 将字符串转成字符数组 char[] chars = chinese.toCharArray(); try { 
    for (char c : chars) { 
    // 是中文则进行转换 if (String.valueOf(c).matches("[\u4e00-\u9fa5]+")) { 
    String[] pinyinStr = PinyinHelper.toHanyuPinyinStringArray(c, PINYIN_FORMAT); result.append(pinyinStr[0].charAt(0));// 取每个中文的第一个拼音字母 } else { 
    result.append(c); } } } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) { 
    badHanyuPinyinOutputFormatCombination.printStackTrace(); } return result.toString(); } / * 汉字转拼音小写 * * @param chinese * @return */ public static String toPinYin(String chinese) { 
    // 创建返回对象 StringBuilder result = new StringBuilder();// 方法调用的时候新建,对象没有共享,不会有线程安全问题。 // 将字符串转成字符数组 char[] chars = chinese.toCharArray(); try { 
    for (char c : chars) { 
    // 是中文则进行转换 if (String.valueOf(c).matches("[\u4e00-\u9fa5]+")) { 
    String[] pinyinStr = PinyinHelper.toHanyuPinyinStringArray(c, PINYIN_FORMAT); // result.append(pinyinStr[0].charAt(0));//取每个中文的第一个拼音字母 result.append(pinyinStr[0]); } else { 
    result.append(c); } } } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) { 
    badHanyuPinyinOutputFormatCombination.printStackTrace(); } return result.toString(); } / * 汉字转拼音每个字符串的第一个字母大写其余小写 * * @param chinese * @return */ public static String toUpperStringsFirstCharPinYin(String chinese) { 
    // 创建返回对象 StringBuilder result = new StringBuilder();// 方法调用的时候新建,对象没有共享,不会有线程安全问题。 // 将字符串转成字符数组 char[] chars = chinese.toCharArray(); try { 
    for (char c : chars) { 
    // 是中文则进行转换 if (String.valueOf(c).matches("[\u4e00-\u9fa5]+")) { 
    String[] pinyinStr = PinyinHelper.toHanyuPinyinStringArray(c, PINYIN_FORMAT); // result.append(pinyinStr[0].charAt(0));//取每个中文的第一个拼音字母 String c1 = String.valueOf(pinyinStr[0]); result.append(c1.substring(0, 1).toUpperCase()).append(c1.substring(1)); } else { 
    result.append(c); } } } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) { 
    badHanyuPinyinOutputFormatCombination.printStackTrace(); } return result.toString(); } / * 将字符串转换成ASCII码 * * @param cnStr * @return String */ public static String getCnASCII(String cnStr) { 
    StringBuffer strBuf = new StringBuffer(); // 将字符串转换成字节序列 byte[] bGBK = cnStr.getBytes(); for (int i = 0; i < bGBK.length; i++) { 
    // 将每个字符转换成ASCII码 strBuf.append(Integer.toHexString(bGBK[i] & 0xff) + " "); } return strBuf.toString(); } } 

三、测试使用

package com.aliyun.vuelogin; import com.aliyun.vuelogin.util.PingYinUtils; public class PingYinTest { 
    public static void main(String[] args) { 
    String firstPinYin = PingYinUtils.toFirstPinYin("王安石").toUpperCase(); String pinYin = PingYinUtils.toPinYin("王安石"); String upperStringsFirstCharPinYin = PingYinUtils.toUpperStringsFirstCharPinYin("王安石"); String cnASCII = PingYinUtils.getCnASCII("王安石"); System.out.println(firstPinYin); System.out.println(pinYin); System.out.println(upperStringsFirstCharPinYin); System.out.println(cnASCII); } } 

运行结果

讯享网WAS wanganshi WangAnShi e7 8e 8b e5 ae 89 e7 9f b3 
小讯
上一篇 2025-03-19 12:44
下一篇 2025-03-09 20:08

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/45469.html