Blame view

java110-utils/src/main/java/com/java110/utils/util/PinYinUtil.java 3.48 KB
88e030b7   王彪总   init project
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
  package com.java110.utils.util;
  
  
  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;
  
  /**
   * 拼音工具类
   */
  public class PinYinUtil {
  
      /**
       * 将字符串中的中文转化为拼音,其他字符不变
       *
       * @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();
      }
  }