博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 实现中文-拼音转换
阅读量:6883 次
发布时间:2019-06-27

本文共 5522 字,大约阅读时间需要 18 分钟。

Java 实现中文-拼音转换

/** * 中文转拼音 * * @author : CatalpaFlat */public class ChineseToPinyinUtil {    /**     * 将文字转为汉语拼音     *     * @param chineseLanguage 要转成拼音的中文     */    public static String toHanyuPinyin(String chineseLanguage) {        char[] clChars = chineseLanguage.trim().toCharArray();        StringBuilder hanyupinyin = new StringBuilder();        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();        // 输出拼音全部小写        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);        // 不带声调        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);        defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V);        try {            for (char clChar : clChars) {                // 如果字符是中文,则将中文转为汉语拼音                if (String.valueOf(clChar).matches("[\u4e00-\u9fa5]+")) {                    hanyupinyin.append(PinyinHelper.toHanyuPinyinStringArray(clChar, defaultFormat)[0]);                    // 如果字符不是中文,则不转换                } else {                    hanyupinyin.append(clChar);                }            }        } catch (BadHanyuPinyinOutputFormatCombination e) {            System.out.println("字符不能转成汉语拼音");        }        return hanyupinyin.toString();    }    public static String getFirstLettersUp(String chineseLanguage) {        return getFirstLetters(chineseLanguage, HanyuPinyinCaseType.UPPERCASE);    }    public static String getFirstLettersLo(String chineseLanguage) {        return getFirstLetters(chineseLanguage, HanyuPinyinCaseType.LOWERCASE);    }    private static String getFirstLetters(String chineseLanguage, HanyuPinyinCaseType caseType) {        char[] clChars = chineseLanguage.trim().toCharArray();        StringBuilder hanyupinyin = new StringBuilder();        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();        // 输出拼音全部大写        defaultFormat.setCaseType(caseType);        // 不带声调        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);        try {            for (char clChar : clChars) {                String str = String.valueOf(clChar);                // 如果字符是中文,则将中文转为汉语拼音,并取第一个字母                if (str.matches("[\u4e00-\u9fa5]+")) {                    hanyupinyin.append(PinyinHelper.toHanyuPinyinStringArray(clChar, defaultFormat)[0].substring(0, 1));                    // 如果字符是数字,取数字                } else if (str.matches("[0-9]+")) {                    hanyupinyin.append(clChar);                    // 如果字符是字母,取字母                } else if (str.matches("[a-zA-Z]+")) {                    hanyupinyin.append(clChar);                    //如果是标点符号的话,带着                } else {// 否则不转换                    hanyupinyin.append(clChar);                }            }        } catch (BadHanyuPinyinOutputFormatCombination e) {            System.out.println("字符不能转成汉语拼音");        }        return hanyupinyin.toString();    }    public static String getPinyinString(String chineseLanguage) {        char[] clChars = chineseLanguage.trim().toCharArray();        StringBuilder hanyupinyin = new StringBuilder();        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();        // 输出拼音全部大写        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);        // 不带声调        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);        try {            for (char clChar : clChars) {                String str = String.valueOf(clChar);                // 如果字符是中文,则将中文转为汉语拼音,并取第一个字母                if (str.matches("[\u4e00-\u9fa5]+")) {                    hanyupinyin.append(PinyinHelper.toHanyuPinyinStringArray(                            clChar, defaultFormat)[0]);                    // 如果字符是数字,取数字                } else if (str.matches("[0-9]+")) {                    // 如果字符是字母,取字母                    hanyupinyin.append(clChar);                } else if (str.matches("[a-zA-Z]+")) {                    hanyupinyin.append(clChar);                }            }        } catch (BadHanyuPinyinOutputFormatCombination e) {            System.out.println("字符不能转成汉语拼音");        }        return hanyupinyin.toString();    }    /**     * 取第一个汉字的第一个字符     */    public static String getFirstLetter(String chineseLanguage) {        char[] clChars = chineseLanguage.trim().toCharArray();        String hanyupinyin = "";        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();        // 输出拼音全部大写        defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);        // 不带声调        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);        try {            String str = String.valueOf(clChars[0]);            // 如果字符是中文,则将中文转为汉语拼音,并取第一个字母            if (str.matches("[\u4e00-\u9fa5]+")) {                hanyupinyin = PinyinHelper.toHanyuPinyinStringArray(                        clChars[0], defaultFormat)[0].substring(0, 1);                // 如果字符是数字,取数字            } else if (str.matches("[0-9]+")) {                hanyupinyin += clChars[0];                // 如果字符是字母,取字母            } else if (str.matches("[a-zA-Z]+")) {                hanyupinyin += clChars[0];            }        } catch (BadHanyuPinyinOutputFormatCombination e) {            System.out.println("字符不能转成汉语拼音");        }        return hanyupinyin;    }//    public static void main(String[] args) {//        ChineseToPinyinUtil hanyuPinyinHelper = new ChineseToPinyinUtil();//        String city = ChineseToPinyinUtil.toHanyuPinyin("深圳市");//        String string = "shenzhen";//        if (city.contains(string)) {//            System.out.println("OK");//        }//    }}复制代码

转载地址:http://chnbl.baihongyu.com/

你可能感兴趣的文章
ES6学习文档(更新至第7节)
查看>>
再次理解伪类选择器:nth-child(){……}
查看>>
MongoDB 在windows服务器安装部署与远程访问配置
查看>>
iOS实现类似苹果手机原生的锁屏界面(数字密码)
查看>>
[vue] 表单输入格式化,中文输入法异常
查看>>
Observer观察者模式与OCP开放-封闭原则
查看>>
如何搭建高级工程师知识框架?推荐两种方式
查看>>
BAT的医疗春秋大梦
查看>>
Pulsar本地单机(伪)集群 (裸机安装与docker方式安装) 2.2.0
查看>>
利用H5的css3制作动画
查看>>
Android View 事件分发源码分析
查看>>
vue 2.0 - props
查看>>
RustCon Asia 实录 | Rust 在国内某视频网站的应用
查看>>
Vue遇上Analytics
查看>>
mysql
查看>>
修改max_allowed_packet(允许执行的sql最大长度)
查看>>
node js 处理时间分析
查看>>
判断数据库、表和字段是否存在
查看>>
新手安装postgreSQL后无法连接服务器
查看>>
递归和动态规划
查看>>