黑马程序员技术交流社区

标题: 【西安校区】java获取中文串拼音或拼音首字母 [打印本页]

作者: 逆风TO    时间: 2019-10-30 13:29
标题: 【西安校区】java获取中文串拼音或拼音首字母

例一:获取中文拼音首字母
中华人民共和国万岁!
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));
    }
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2