您的位置:首页 > 其它

中文字转拼音工具

2011-04-24 10:15 225 查看
1、引入pinyin4j.jar包(可以从http://pinyin4j.sourceforge.net 网站上下载)

如果是MAVEN工具可以加入依赖

<dependency>

        <groupId>pinyin4j.sourceforge.net</groupId>

        <artifactId>pinyin4j</artifactId>

        <version>2.5.0</version>

</dependency>

注:具体使用方法请查看http://pinyin4j.sourceforge.net内的相关文档

import java.util.regex.Matcher;

import java.util.regex.Pattern;

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;

import org.apache.log4j.Logger;

/**

 *

 * File Name : PinyinUtil.java

 *

 * @Description : 中文拼音工具类

 */

public class PinyinUtil

{

    private static Logger logger = Logger.getLogger(PinyinUtil.class.getName());

    /**

     * Description : 根据汉字获得此汉字的拼音

     *

     * @param hanzhis

     * @return

     *

     */

    public static String getPinYin(String hanzhis)

    {

        return getPinYin(hanzhis, false);

    }

    /**

     * Description : 根据汉字获得此汉字的拼音首字母

     *

     * @param hanzhis

     * @return

     *

     */

    public static String getPinYinHeadChar(String hanzhis)

    {

        return getPinYin(hanzhis, true);

    }

    private static String getPinYin(String hanzhis, boolean isHeadChar)

    {

        int len = hanzhis.length();

        char[] hanzhi = hanzhis.toCharArray();

        // 设置输出格式

        HanyuPinyinOutputFormat formatParam = new HanyuPinyinOutputFormat();

        formatParam.setCaseType(HanyuPinyinCaseType.UPPERCASE);

        formatParam.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

        formatParam.setVCharType(HanyuPinyinVCharType.WITH_V);

        StringBuilder py = new StringBuilder();

        Pattern pattern = Pattern.compile("^[/u4e00-/u9fa5]{0,128}$");

        for (int i = 0; i < len; i++)

        {

            char c = hanzhi[i];

            Matcher matcher = pattern.matcher(String.valueOf(c));

            // 检查是否是汉字,如果不是汉字就不转换

            if (!matcher.matches())

            {

                py.append(c);

                continue;

            }

            // 对汉字进行转换成拼音

            try

            {

                String[] t2 = PinyinHelper.toHanyuPinyinStringArray(c,

                        formatParam);

                if (isHeadChar)

                {

                    py.append(t2[0].charAt(0));

                } else

                {

                    py.append(t2[0]);

                }

            } catch (BadHanyuPinyinOutputFormatCombination e)

            {

                logger.error(c + " to pinyin error!", e);

                py.append(c);

            }

        }

        return py.toString();

    }

    public static void main(String[] args)

    {

        String test = "汉字转拼音";

        System.err.println(PinyinUtil.getPinYin(test));

        System.err.println(PinyinUtil.getPinYinHeadChar(test));

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息