例一:获取中文拼音首字母

中华人民共和国万岁!

zhrmghgws!

例二:获取中文拼音

我爱你中国!

woainizhongguo!

引入如下jar包:


            <dependency>

                <groupId>org.apache.commons</groupId>

                <artifactId>commons-collections4</artifactId>

                <version>4.2</version>

            </dependency>

            <dependency>

                <groupId>com.belerweb</groupId>

                <artifactId>pinyin4j</artifactId>

                <version>2.5.1</version>

            </dependency>

创建工具类PinYinUtil:


import net.sourceforge.pinyin4j.PinyinHelper;

import org.apache.commons.lang3.ArrayUtils;

import org.apache.commons.lang3.StringUtils;


/***

* 获取中文串拼音或拼音首字母

* @author 杨红杰

* @date 2018/12/25

*/

public class PinYinUtil {

    private PinYinUtil() {}


    /**

     * 获取中文拼音首字母,其他字符不变

     *

     * @param str

     * @return String

     */

    public static String getShortPinyin(String str) {

        return getShortPinyin(str, true);

    }


    /**

     * 获取中文拼音首字母

     * @param str

     * @param retain 为true保留其他字符

     * @return String

     */

    public static String getShortPinyin(String str, boolean retain) {

        return getPinyin(str, true, retain);

    }


    /**

     * 获取中文拼音,其他字符不变

     *

     * @param str

     * @return String

     */

    public static String getFullPinyin(String str) {

        return getFullPinyin(str, true);

    }


    /**

     * 获取中文拼音

     * @param str

     * @param retain 为true保留其他字符

     * @return String

     */

    public static String getFullPinyin(String str, boolean retain) {

        return getPinyin(str, false, retain);

    }


    /**

     * 获取中文拼音

     *

     * @param str

     * @param shortPinyin 为true获取中文拼音首字母

     * @param retain      为true保留其他字符

     * @return String

     */

    private static String getPinyin(String str, boolean shortPinyin, boolean retain) {

        if (StringUtils.isBlank(str)) {

            return "";

        }

        StringBuffer pinyinBuffer = new StringBuffer();

        char[] arr = str.toCharArray();

        for (char c : arr) {

            String[] temp = PinyinHelper.toHanyuPinyinStringArray(c);

            if (ArrayUtils.isNotEmpty(temp)) {

                if (StringUtils.isNotBlank(temp[0])) {

                    if (shortPinyin) {

                        pinyinBuffer.append(temp[0].charAt(0));

                    } else {

                        pinyinBuffer.append(temp[0].replaceAll("\\d", ""));

                    }

                }

            } else {

                if (retain) {

                    pinyinBuffer.append(c);

                }

            }

        }

        return pinyinBuffer.toString();

    }


    public static void main(String[] args) {

        String str = "中华人民共和国万岁!";

        System.out.println("例一:获取中文拼音首字母");

        System.out.println(str);

        System.out.println(getShortPinyin(str));

        str = "我爱你中国!";

        System.out.println("例二:获取中文拼音");

        System.out.println(str);

        System.out.println(getFullPinyin(str));

    }

}

更多Java学习资料可关注:gzitcast