首页 > 编程 > Java > 正文

Java之——汉字转换拼音(大小写)

2019-11-08 03:23:23
字体:
来源:转载
供稿:网友

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/55505397

pinyin4J 是一个可以将汉字转换成拼音的lib,非常实用,其maven地址为:http://mvnrepository.com/artifact/com.belerweb/pinyin4j/2.5.0pinyin4J 提供PinyinHelper这个静态类对外提供拼音转换的服务,主要有一下方法:

static public String[] toHanyuPinyinStringArray(char ch)将char(必须为汉字单字)转化为拼音,实用的是通用的格式,如果ch为非汉字,返回null。输入:重 输出:[zhong4, chong2]说明重字有两个读音,拼音后面的1,2,3,4 代表的是读音
static public String[] toHanyuPinyinStringArray(char ch,HanyuPinyinOutputFormat outputFormat)同上,但是这个方法可以设置输出的格式。HanyuPinyinOutputFormat   可以设置拼音大小写、是否后面加读音数字、特殊读音的显示方式,定义如下:
/** * The option indicates that the output of 'ü' is "u:" */public static final HanyuPinyinVCharType WITH_U_AND_COLON = new HanyuPinyinVCharType("WITH_U_AND_COLON");/** * The option indicates that the output of 'ü' is "v" */public static final HanyuPinyinVCharType WITH_V = new HanyuPinyinVCharType("WITH_V")/** * The option indicates that the output of 'ü' is "ü" in Unicode form */public static final HanyuPinyinVCharType WITH_U_UNICODE = new HanyuPinyinVCharType("WITH_U_UNICODE");
static public String[] toTongyongPinyinStringArray(char ch) 	//转换为通用拼音static public String[] toWadeGilesPinyinStringArray(char ch)	//转换为威妥玛拼音static public String[] toMPS2PinyinStringArray(char ch)   	    //转换为注音符号拼音static public String[] toYalePinyinStringArray(char ch)			//转换为耶魯拼音static public String[] toGwoyeuRomatzyhStringArray(char ch)		//转换为国语罗马字对于”重“的拼音转换,以上方法分别得到的结果是:
汉语拼音:[zhong4, chong2]通用拼音:[jhong4, chong2]威妥玛拼音:[chung4, ch`ung2]注音符号拼音:[jung4, chung2]耶魯拼音:[jung4, chung2]国语罗马字:[jonq, chorng]好了,有了上面的基础,我们可以封装一个工具类,用来将汉字转换成拼音,这里只使用了汉字拼音。首先要将pinyin4j加入项目中,如果是maven项目,可以添加引用:
<dependency>    <groupId>com.belerweb</groupId>    <artifactId>pinyin4j</artifactId>    <version>2.5.0</version></dependency>非maven的可以直接将下载好的jar包放入classpath。然后编写工具类 PinyinTool.java:
package com.lyz.pingyin;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;/** * 汉字转化为拼音的工具类 * @author liuyazhuang * */public class PinyinTool {    HanyuPinyinOutputFormat format = null;    public static enum Type {        UPPERCASE,              //全部大写        LOWERCASE,              //全部小写        FIRSTUPPER              //首字母大写    }    public PinyinTool(){        format = new HanyuPinyinOutputFormat();        format.setCaseType(HanyuPinyinCaseType.UPPERCASE);        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);    }    public String toPinYin(String str) throws BadHanyuPinyinOutputFormatCombination{        return toPinYin(str, "", Type.UPPERCASE);    }    public String toPinYin(String str,String spera) throws BadHanyuPinyinOutputFormatCombination{        return toPinYin(str, spera, Type.UPPERCASE);    }    /**     * 将str转换成拼音,如果不是汉字或者没有对应的拼音,则不作转换     * 如: 明天 转换成 MINGTIAN     * @param str:要转化的汉字     * @param spera:转化结果的分割符     * @return     * @throws BadHanyuPinyinOutputFormatCombination     */    public String toPinYin(String str, String spera, Type type) throws BadHanyuPinyinOutputFormatCombination {        if(str == null || str.trim().length()==0)            return "";        if(type == Type.UPPERCASE)            format.setCaseType(HanyuPinyinCaseType.UPPERCASE);        else            format.setCaseType(HanyuPinyinCaseType.LOWERCASE);        String py = "";        String temp = "";        String[] t;        for(int i=0;i<str.length();i++){            char c = str.charAt(i);            if((int)c <= 128)                py += c;            else{                t = PinyinHelper.toHanyuPinyinStringArray(c, format);                if(t == null)                    py += c;                else{                    temp = t[0];                    if(type == Type.FIRSTUPPER)                        temp = t[0].toUpperCase().charAt(0)+temp.substring(1);                    py += temp+(i==str.length()-1?"":spera);                }            }        }        return py.trim();    }}编写测试类PingyinToolTest

package com.lyz.pingyin.test;import com.lyz.pingyin.PinyinTool;import com.lyz.pingyin.PinyinTool.Type;/** * 测试拼音转化结果 * @author liuyazhuang * */public class PingyinToolTest {	public static void main(String[] args) throws Exception{		PinyinTool tool = new PinyinTool();		System.out.PRintln("刘亚壮的运行测试结果为====" + tool.toPinYin("刘亚壮", "", Type.LOWERCASE));	}}

运行测试结果如下:
刘亚壮的运行测试结果为====liuyazhuang


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表