PinYin4J 汉字转化成拼音

   汉字转成拼音如果自己实现起来有点麻烦,主要是怕有些汉字转不了,所以就准备使用一个开源的工具Pinyin4j.         汉子转化成拼音主要是应用了相关对应的字典编码。通过字典编码进行相关的转化,比如:Ascii码。         pinyin4j是一个支持将中文转换到拼音的Java开源类库,pinyin4j能够根据中文字符获取其对应的拼音,而且拼音的格式可以定制。pinyin4j的主页:http://pinyin4j.sourceforge.net/          1. 支持简体中文和繁体中文字符;         2. 支持转换到汉语拼音,通用拼音, 威妥玛拼音(威玛拼法), 注音符号第二式, 耶鲁拼法和国语罗马字;         3. 支持多音字,即可以获取一个中文字符的多种发音;         4. 支持多种字符串输出格式,比如支持Unicode格式的字符ü和声调符号(阴平 "ˉ",阳平"ˊ",上声"ˇ",去声"ˋ")的输出。        5.相关Jar包请自己下载  
package org.lycandjava.util.charactor;  
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;        /**   * @className:PinyingUtil.java   * @classDescription:拼音操作工具类   * @author:liyingchao   * @createTime:2011-06-23   */        public class PinyinUtil {            /**        * 将字符串转换成拼音数组        *         * @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) {            System.out.println(stringArrayToString(getHeadByString("我se 心")));            System.out.println(hanziToPinyin("李颖超",""));        }        }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值