龙空技术网

Java,类库,Pinyin4j,简体和繁体中文转换成拼音,代码案例

古怪今人 371

前言:

今天姐妹们对“java生成汉字”都比较关怀,朋友们都需要剖析一些“java生成汉字”的相关内容。那么小编也在网络上搜集了一些对于“java生成汉字””的相关文章,希望小伙伴们能喜欢,你们一起来学习一下吧!

Java开源类库Pinyin4j

Pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库;地址:

功能:

1、支持同一汉字有多个发音。

2、还支持拼音的格式化输出,比如第几声之类的。

3、同时支持简体中文、繁体中文转换为拼音,使用起来也非常简单。

代码案例

pom.xml

<dependency>    <groupId>com.belerweb</groupId>    <artifactId>pinyin4j</artifactId>    <version>2.5.1</version></dependency>
package com.what21.demo.pinyin4j;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 Pinyin4jDemo01 {    public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination {        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();        // 控制大小写        // UPPERCASE:大写  (ZHONG)        // LOWERCASE:小写  (zhong)        defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);        // WITHOUT_TONE:无音标  (zhong)        // WITH_TONE_NUMBER:1-4数字表示英标  (zhong4)        // WITH_TONE_MARK:直接用音标符(必须WITH_U_UNICODE否则异常)  (zhòng)        defaultFormat.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER);        // WITH_V:用v表示ü  (nv)        // WITH_U_AND_COLON:用"u:"表示ü  (nu:)        // WITH_U_UNICODE:直接用ü (nü)        defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);        // oHanyuPinyinStringArray如果传入的字符不是汉字不能转换成拼音,那么会直接返回null。        // 《甄嬛传》        String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('嬛', defaultFormat);        for (String str : pinyin) {            System.out.println(str);        }    }}
package com.what21.demo.pinyin4j;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;public class Pinyin4jDemo11 {    /**     * @param chines     * @return     */    public static String getPinYinHeadChar(String chines) {        String convert = "";        for (int i = 0; i < chines.length(); i++) {            char word = chines.charAt(i);            // 先判断其是否是汉字            if (String.valueOf(word).matches("[\\u4E00-\\u9FA5]+")) {                //提取汉字的首字母                String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);                if (pinyinArray != null) {                    convert += pinyinArray[0].charAt(0);                } else {                    convert += word;                }            }        }        return convert;    }    /**     * 获得汉语拼音首字母     *     * @param chines 汉字     * @return     */    public static String getPinYinHeadChar2(String chines) {        String pinyinName = "";        char[] nameChar = chines.toCharArray();        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();        defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);        for (int i = 0; i < nameChar.length; i++) {            if (nameChar[i] > 128) {                try {                    pinyinName += PinyinHelper.toHanyuPinyinStringArray(                            nameChar[i], defaultFormat)[0].charAt(0);                } catch (BadHanyuPinyinOutputFormatCombination e) {                    e.printStackTrace();                }            } else {                pinyinName += nameChar[i];            }        }        return pinyinName;    }    public static void main(String[] args) {        // nh        System.out.println(getPinYinHeadChar("a1你好12"));        // NH        System.out.println(getPinYinHeadChar("a1你好12").toUpperCase());        // a1NH12        System.out.println(getPinYinHeadChar2("a1你好12"));        // A1NH12        System.out.println(getPinYinHeadChar2("a1你好12").toUpperCase());    }}
package com.what21.demo.pinyin4j;import net.sourceforge.pinyin4j.PinyinHelper;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 Pinyin4jDemo12 {    private static HanyuPinyinOutputFormat PINYIN_FORMAT;    static {        PINYIN_FORMAT = new HanyuPinyinOutputFormat();        PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE);        PINYIN_FORMAT.setVCharType(HanyuPinyinVCharType.WITH_V);    }    public static String toPinyin(String input) {        StringBuilder sb = new StringBuilder();        for (int i = 0; i < input.length(); i++) {            char c = input.charAt(i);            if (c <= 255) {                sb.append(c);            } else {                String pinyin = null;                try {                    String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, PINYIN_FORMAT);                    pinyin = pinyinArray[0];                } catch (BadHanyuPinyinOutputFormatCombination e) {                } catch (NullPointerException e) {                    // 如果是日文,可能抛出该异常                }                if (pinyin != null) {                    sb.append(pinyin);                }            }        }        return sb.toString();    }    public static void main(String[] args) {        String str = "a1你好12";        String result = toPinyin(str);        // a1nihao12        System.out.println(result);    }}

标签: #java生成汉字