欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java使用pinyin4j实现汉语转拼音,javapinyin4j,[Java]代码pack

来源: javaer 分享于  点击 37137 次 点评:90

java使用pinyin4j实现汉语转拼音,javapinyin4j,[Java]代码pack


[Java]代码

package byrx.net.pinyin;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;import cn.com.testClass.P;/** * @className:PinyingUtil.java * @classDescription:拼音操作工具类 * @author:xiayingjie * @createTime:2010-10-21 */public class HanYuPinYinUtility {    /**     * 将字符串转换成拼音数组     *      * @param src     * @return     */    public static String[] stringToPinyin(String src) {        return stringToPinyin(src, false, null);    }    /**     * 将字符串转换成拼音数组     *      * @param src     * @return     */    public static String[] stringToPinyin(String src,String separator) {        return stringToPinyin(src, true, separator);    }    /**     * 将字符串转换成拼音数组     *      * @param src     * @param isPolyphone     *            是否查出多音字的所有拼音     * @param separator     *            多音字拼音之间的分隔符     * @return     */    public static String[] stringToPinyin(String src, boolean isPolyphone,            String separator) {        // 判断字符串是否为空        if ("".equals(src) || null == src) {            return null;        }        char[] srcChar = src.toCharArray();        int srcCount = srcChar.length;        String[] srcStr = new String[srcCount];        for (int i = 0; i < srcCount; i++) {            srcStr[i] = charToPinyin(srcChar[i], isPolyphone, separator);        }        return srcStr;    }    /**     * 将单个字符转换成拼音     *      * @param src     * @return     */    public static String charToPinyin(char src, boolean isPolyphone,            String separator) {        // 创建汉语拼音处理类        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();        // 输出设置,大小写,音标方式        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);        StringBuffer tempPinying = new StringBuffer();        // 如果是中文        if (src > 128) {            try {                // 转换得出结果                String[] strs = PinyinHelper.toHanyuPinyinStringArray(src,                        defaultFormat);                // 是否查出多音字,默认是查出多音字的第一个字符                if (isPolyphone && null != separator) {                    for (int i = 0; i < strs.length; i++) {                        tempPinying.append(strs[i]);                        if (strs.length != (i + 1)) {                            // 多音字之间用特殊符号间隔起来                            tempPinying.append(separator);                        }                    }                } else {                    tempPinying.append(strs[0]);                }            } catch (BadHanyuPinyinOutputFormatCombination e) {                e.printStackTrace();            }        } else {            tempPinying.append(src);        }        return tempPinying.toString();    }    public static String hanziToPinyin(String hanzi){        return hanziToPinyin(hanzi," ");    }    /**     * 将汉字转换成拼音     * @param hanzi     * @param separator     * @return     */    public static String hanziToPinyin(String hanzi,String separator){            // 创建汉语拼音处理类            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();            // 输出设置,大小写,音标方式            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);            String pinyingStr="";            try {                pinyingStr=PinyinHelper.toHanyuPinyinString(hanzi, defaultFormat, separator);            } catch (BadHanyuPinyinOutputFormatCombination e) {                // TODO Auto-generated catch block                e.printStackTrace();            }               return pinyingStr;    }    /**     * 将字符串数组转换成字符串     * @param str      * @param separator 各个字符串之间的分隔符     * @return     */    public static String stringArrayToString(String[] str, String separator) {        StringBuffer sb = new StringBuffer();        for (int i = 0; i < str.length; i++) {            sb.append(str[i]);            if (str.length != (i + 1)) {                sb.append(separator);            }        }        return sb.toString();    }    /**     * 简单的将各个字符数组之间连接起来     * @param str     * @return     */    public  static String stringArrayToString(String[] str){        return stringArrayToString(str,"");    }    /**     * 将字符数组转换成字符串     * @param str      * @param separator 各个字符串之间的分隔符     * @return     */    public static String charArrayToString(char[] ch, String separator) {        StringBuffer sb = new StringBuffer();        for (int i = 0; i < ch.length; i++) {            sb.append(ch[i]);            if (ch.length != (i + 1)) {                sb.append(separator);            }        }        return sb.toString();    }    /**     * 将字符数组转换成字符串     * @param str      * @return     */    public static String charArrayToString(char[] ch) {        return charArrayToString(ch," ");    }    /**     * 取汉字的首字母     * @param src     * @param isCapital 是否是大写     * @return     */    public static char[]  getHeadByChar(char src,boolean isCapital){        //如果不是汉字直接返回        if (src <= 128) {            return new char[]{src};        }        //获取所有的拼音        String []pinyingStr=PinyinHelper.toHanyuPinyinStringArray(src);        //创建返回对象        int polyphoneSize=pinyingStr.length;        char [] headChars=new char[polyphoneSize];        int i=0;        //截取首字符        for(String s:pinyingStr){            char headChar=s.charAt(0);            //首字母是否大写,默认是小写            if(isCapital){                headChars[i]=Character.toUpperCase(headChar);             }else{                headChars[i]=headChar;             }            i++;        }        return headChars;    }    /**     * 取汉字的首字母(默认是大写)     * @param src     * @return     */    public static char[]  getHeadByChar(char src){        return getHeadByChar(src,true);    }    /**     * 查找字符串首字母     * @param src      * @return     */    public  static String[] getHeadByString(String src){        return getHeadByString( src, true);    }    /**     * 查找字符串首字母     * @param src      * @param isCapital 是否大写     * @return     */    public  static String[] getHeadByString(String src,boolean isCapital){        return getHeadByString( src, isCapital,null);    }    /**     * 查找字符串首字母     * @param src      * @param isCapital 是否大写     * @param separator 分隔符     * @return     */    public  static String[] getHeadByString(String src,boolean isCapital,String separator){        char[]chars=src.toCharArray();        String[] headString=new String[chars.length];        int i=0;        for(char ch:chars){            char[]chs=getHeadByChar(ch,isCapital);            StringBuffer sb=new StringBuffer();            if(null!=separator){                int j=1;                for(char ch1:chs){                    sb.append(ch1);                    if(j!=chs.length){                        sb.append(separator);                    }                    j++;                }            }else{                sb.append(chs[0]);            }            headString[i]=sb.toString();            i++;        }        return headString;    }    public static void main(String[] args) {        //将字符串转换成拼音数组        String test1[]=stringToPinyin("曹顺写爪哇");        String test1st="";        for(int i=0;i<test1.length;i++){            test1st+=test1[i];        }        P.S(test1st);        //将字符串转换成拼音数组,以逗号分隔        String test2[]=stringToPinyin("曹顺写爪哇",",");        String test2st="";        for(int i=0;i<test2.length;i++){            test2st+="||||"+test2[i];        }        P.S(test2st);        //将汉字转换成拼音        P.S("将汉字转换成拼音  曹顺写爪哇 ---->>>: "+hanziToPinyin("曹顺写爪哇!"," "));    }}
相关栏目:

用户点评