汉语拼音工具包相关实用方法

6 篇文章 0 订阅
3 篇文章 0 订阅

1.工具包

       pinyin4j-2.5.0.jar

2.工具类,其中包含方法:

     (1)getPingYin---用来获取汉字的汉语拼音,英文以及符号不变 多音字多为常用的拼音,无法具体识别

     (2)getFirstSpell---获取汉字的首首个字母,英文不变,中文符号不允许出现

     (3)getFullSpell---将汉字变成汉语拼音,英文不变,不允许出现中文符号

     (4)toDBC--- 将某些中文标点符号变为英文标点符号

     (5)firstWordToUp---将英文语句每个单词首字母变大写

     (6)changePingYin---把一段汉字变成汉语拼音式的语句

代码如下:

public class PingYinUtil {
    /**
     * 获取汉字的汉语拼音,英文以及符号不变 多音字多为常用的拼音,无法具体识别
     * 
     * @param inputString
     * @return
     */
    public static String getPingYin(String inputString) {
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setVCharType(HanyuPinyinVCharType.WITH_V);

        char[] input = inputString.trim().toCharArray();
        String output = "";

        try {
            for (int i = 0; i < input.length; i++) {
                if (java.lang.Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {// 正则表达式,代表至少匹配一个到汉字
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);// 匹配到汉字就将其变成拼音并拼接
                    output += temp[0];
                } else
                    output += java.lang.Character.toString(input[i]);
            }
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return output;
    }

    /**
     * 获取汉字的首首个字母,英文不变,中文符号不允许出现
     * 
     * @param chinese
     * @return
     */
    public static String getFirstSpell(String chinese) {
        StringBuffer pybf = new StringBuffer();
        char[] arr = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > 128) {// 用于判断是不是键盘上的单个字符,是就不用变直接拼接,不是,就将其汉语拼音化
                try {
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
                    if (temp != null) {
                        pybf.append(temp[0].charAt(0));
                    } else {
                        System.out.println("出现非法字符");
                    }
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            } else {
                pybf.append(arr[i]);
            }
        }
        // 用于去除除单词字符的所有其他字符
        return pybf.toString().replaceAll("\\W", "").trim();// 正则表达式表示匹配任何非单词字符。等价于“[^A-Za-z0-9_]”
    }

    /**
     * 将汉字变成汉语拼音,英文不变,不允许出现中文符号
     * 
     * @param chinese
     * @return
     */
    public static String getFullSpell(String chinese) {
        StringBuffer pybf = new StringBuffer();
        char[] arr = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > 128) {
                try {
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
                    // 是否过滤非法字符
                    if (temp != null) {
                        pybf.append(temp[0]);

                    } else {
                        pybf.append(arr[i]);// 不过滤非法字符
                        System.out.println("出现非法字符");
                    }
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            } else {
                pybf.append(arr[i]);
            }
        }
        return pybf.toString();
    }

    /**
     * 将某些中文标点符号变为英文标点符号
     */
    public static String toDBC(String input) {
        char[] c = input.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == 12288) {
                c[i] = (char) 32;
                continue;
            }
            if (c[i] > 65280 && c[i] < 65375)
                c[i] = (char) (c[i] - 65248);
        }
        return new String(c);
    }
    /**
     *将英文语句每个单词首字母变大写
     * 
     */
    public static String firstWordToUp(String input) {
        StringBuffer pybf = new StringBuffer();
        char[] arr = input.toCharArray();
        boolean flag=false;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] < 128) {// 用于判断是不是键盘上的单个字符
                String temp = Character.toString(arr[i]);
                if (i != 0) {
                    if (temp!=null) {
                        if(!flag){
                           if(temp.equals("!")||temp.equals(".")||temp.equals("?")){
                               flag=true;
                               pybf.append(temp);
                           }else
                           pybf.append(temp);
                        }else{
                            pybf.append(temp.toUpperCase());
                            flag=false;
                        }
                    }else{
                        System.out.println("包含非法字符");
                    }
                }else{
                    pybf.append(temp.toUpperCase());
                }
            } else {
                System.out.println("包含非法字符!");
            }
        }
        return pybf.toString();
    }
    /**
     * 把一段话变成汉语拼音式的语句
     * 
     * @param inputString
     * @return
     */
    public static String changePingYin(String inputString) {
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setVCharType(HanyuPinyinVCharType.WITH_V);
        char[] input = inputString.trim().toCharArray();
        String output = "";
        try {
            for (int i = 0; i < input.length; i++) {
                String code=java.lang.Character.toString(input[i]);
                if (code.matches("[\\u4E00-\\u9FA5]+")) {// 正则表达式,代表至少匹配一个到汉字
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);// 匹配到汉字就将其变成拼音并拼接
                    output += temp[0];
                    output +=" ";
                } else if(code.equals("!")||code.equals("!")||code.equals(".")||code.equals("。")||code.equals("?")||code.equals("?")||code.equals(",")||code.equals(","))
                    output += java.lang.Character.toString(input[i]);
            }
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return output;
    }
3.工具类有些地方不完善,很多地方写的也不严谨,有网上查阅的,也有自己编写的,标点符号转换的时候,由于句号不能实现,个人觉得多加个判断应该就可以了,汉语拼音化那里,标点前多了个空格,应该也需要多个判断,自己懒得写了,也没有考虑其他标点符号的情况,总之,很多地方不完善啦,主要最近公司没有事做,随便写写,理理自己的逻辑判断能力,也温习一下基本的方法,以后也算做个参考吧*-*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值