黑马程序员技术交流社区

标题: 【成都校区】Java中文转拼音、汉字转拼音 [打印本页]

作者: 小刀葛小伦    时间: 2019-12-4 13:48
标题: 【成都校区】Java中文转拼音、汉字转拼音
需要jar包
[XML] 纯文本查看 复制代码
        <dependency>
                <groupId>com.belerweb</groupId>
                <artifactId>pinyin4j</artifactId>
                <version>2.5.1</version>
        </dependency>

第一个 : 汉字转拼音全拼不忽略英文字符
[Java] 纯文本查看 复制代码
        /**
         * (全拼)中文转拼音 --->不忽略英文字符
         * @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 > 128) {
                                try {
                                        pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr, defaultFormat)[0]);
                                } catch (BadHanyuPinyinOutputFormatCombination e) {
                                        e.printStackTrace();
                                }
                        } else {
                                pybf.append(arr);
                        }
                }
                return pybf.toString();
        }

第二个 : 汉字转拼音首字母不忽略英文字符
[Java] 纯文本查看 复制代码
        /**
         * (首字母)汉字转拼音--->不忽略英文字符
         * @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 > 128) {
                                try {
                                        String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr, defaultFormat);
                                        if (temp != null) {
                                                pybf.append(temp[0].charAt(0));
                                        }
                                } catch (BadHanyuPinyinOutputFormatCombination e) {
                                        e.printStackTrace();
                                }
                        } else {
                                pybf.append(arr);
                        }
                }
                return pybf.toString().replaceAll("\\W", "").trim();
        }

第三个 : 汉字转拼音全拼忽略英文字符
[Java] 纯文本查看 复制代码
        /**
         * (全拼)中文转拼音自动--->忽略英文字符
         * @param inputString
         * @return
         */
        public static String getFullSpell_WithoutEnglish(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++) {
                                System.err.println(input);
                                if (java.lang.Character.toString(input).matches("[\\u4E00-\\u9FA5]+")) {
                                        String[] temp = PinyinHelper.toHanyuPinyinStringArray(input, format);
                                        output += temp[0];
                                }
                        }
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                        e.printStackTrace();
                }
                return output;
        }

第四个 : 汉字转拼音首字母忽略英文字符
[Java] 纯文本查看 复制代码
        /**
         * (首字母)汉字转拼音--->忽略英文字符
         * @param chinese
         * @return
         */
        public static String getFirstSpell_WithoutEnglish(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 > 128) {
                                try {
                                        String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr, defaultFormat);
                                        if (temp != null) {
                                                pybf.append(temp[0].charAt(0));
                                        }
                                } catch (BadHanyuPinyinOutputFormatCombination e) {
                                        e.printStackTrace();
                                }
                        }
                }
                return pybf.toString().replaceAll("\\W", "").trim();
        }







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2