From b3d847e402006235bca96346ed671c67bb3a7e15 Mon Sep 17 00:00:00 2001 From: liquanyu Date: Tue, 6 Sep 2016 20:09:34 +0800 Subject: [PATCH] code update --- .../lyms/platform/common/utils/PingYinUtil.java | 104 +++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 platform-common/src/main/java/com/lyms/platform/common/utils/PingYinUtil.java diff --git a/platform-common/src/main/java/com/lyms/platform/common/utils/PingYinUtil.java b/platform-common/src/main/java/com/lyms/platform/common/utils/PingYinUtil.java new file mode 100644 index 0000000..746fe37 --- /dev/null +++ b/platform-common/src/main/java/com/lyms/platform/common/utils/PingYinUtil.java @@ -0,0 +1,104 @@ +package com.lyms.platform.common.utils; + +/** + * Created by Administrator on 2016/9/6. + */ +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.HanyuPinyinVCharType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; + +/** + * 拼音工具类 + * + * @author lsf + */ +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)); + } + } catch (BadHanyuPinyinOutputFormatCombination e) { + e.printStackTrace(); + } + } else { + pybf.append(arr[i]); + } + } + return pybf.toString().replaceAll("\\W", "").trim(); + } + /** + * 获取汉字串拼音,英文字符不变 + * @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 { + pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]); + } catch (BadHanyuPinyinOutputFormatCombination e) { + e.printStackTrace(); + } + } else { + pybf.append(arr[i]); + } + } + return pybf.toString(); + } + + public static void main(String[] args) + { + String s = getFirstSpell("中华人民共和国"); + System.out.print(s); + } +} \ No newline at end of file -- 1.8.3.1