激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - JAVA教程 - java漢字轉拼音工具類分享

java漢字轉拼音工具類分享

2021-03-29 10:15小甜瓜安東泥 JAVA教程

這篇文章主要為大家詳細介紹了java漢字轉拼音工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java漢字轉拼音工具類的具體代碼,供大家參考,具體內容如下

?
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
import com.google.common.base.Strings;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.TreeSet;
 
public class PinyinUtils {
  private static final Logger logger = LoggerFactory.getLogger(PinyinUtils.class);
 
  /**
   * 單字解析
   *
   * @param str first
   * @return
   */
  public static String[] convert(String str) {
    String[] reslut = null;
    HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();
    hanyuPinyinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
    try {
      reslut = PinyinHelper.toHanyuPinyinStringArray(str.charAt(0), hanyuPinyinOutputFormat);
      TreeSet<String> stringTreeSet = new TreeSet<>();
      for (int i = 0; i < reslut.length; i++) {
        if(reslut.length >=3) {
          break;
        }
        stringTreeSet.add(reslut[i].replace("u:","v"));
      }
      reslut = new String[stringTreeSet.size()];
      reslut = stringTreeSet.toArray(reslut);
    } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
      badHanyuPinyinOutputFormatCombination.printStackTrace();
    } catch (Exception e) {
      logger.error("[convert]: ", e);
    }
    return reslut;
  }
 
  /**
   * 詞組解析(全寫)
   *
   * @param chs
   * @return
   */
  public static String getSelling(String chs) {
    return translate(chs, false);
  }
 
  /**
   * 漢字轉拼音
   *
   * @param chs
   * @param acronym
   * @return
   */
  private static String translate(String chs, boolean acronym) {
    StringBuffer buffer=new StringBuffer();
    if (Strings.isNullOrEmpty(chs))
      return "";
    try {
      List<List<String>> temps = new ArrayList<>();
      int len = chs.length();
      int len1 = 0;
      for (int i = 0; i < len; i++) {
        List<String> stringList = new ArrayList<>();
        String key = chs.charAt(i) + "";
        if (key.getBytes().length >= 2) {
          String[] temp = convert(key);
          if(temp.length == 0) {
            continue;
          }
          if (temp == null) {
            stringList.add("");
          } else {
            for (String v : temp) {
              stringList.add(v);
            }
          }
        } else {
          stringList.add(key);
        }
        temps.add(stringList);
        len1++;
      }
      List<List<String>> t = new ArrayList<>();
      for (int i = 0; i < len1; i++) {
        List<String> currentList = new ArrayList<>();
        List<String> stringList = temps.get(i);
        if (stringList != null) {
          for (String s : stringList) {
            if (acronym) {
              s = s.charAt(0) + "";
            }
            if (i > 0) {
              List<String> preList = t.get(i - 1);
              if (preList != null) {
                for (String s1 : preList) {
                  currentList.add(s1 + s);
                }
              }
            }else{
              currentList.add(s);
            }
          }
        }
        t.add(i, currentList);
      }
      if (t.size()>0){
        List<String> currentList= t.get(t.size()-1);
        if (currentList!=null){
          for(String current : currentList){
            buffer.append(current);
            buffer.append("?");
          }
        }
      }
      return buffer.toString();
    } catch (Exception e) {
      logger.error("[getSortLetters]: ", e);
      return "";
    }
  }
 
  /**
   * 詞組解析(縮寫)
   *
   * @param chs
   * @return
   */
  public static String getSmallSelling(String chs) {
    return translate(chs, true);
  }
 
  /**
   * 獲取首字母
   *
   * @return
   */
  public static String getSortLetters(String pingyin) {
    try {
      String sortString = pingyin.substring(0, 1).toUpperCase(Locale.getDefault());
      // 正則表達式,判斷首字母是否是英文字母
      if (sortString.matches("[A-Z]")) {
        return sortString.toUpperCase(Locale.getDefault());
      }
    } catch (Exception e) {
      logger.error("[getSortLetters]: ", e);
    }
    return "#";
  }
 
  public static void main(String [] args) {
    PinyinUtils p = new PinyinUtils();
 
    System.out.println(p.getSelling("單個"));
    System.out.println(p.getSmallSelling("測試"));
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/YuyuanNo1/p/8385332.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩国产综合网 | 大西瓜永久免费av在线 | 成人男女啪啪免费观看网站四虎 | 91免费播放 | 国色天香综合网 | 日本成人在线播放 | 99亚洲精品 | 亚洲一区成人在线 | 黄网站色成年大片免费高 | 国产午夜亚洲精品 | 得得啪在线视频 | 国产午夜精品一区二区三区在线观看 | 天天操天天操天天操天天操天天操天天操 | 欧美毛片 | 黄色片网站免费看 | 日日噜噜噜噜久久久精品毛片 | 精品国产乱码一区二区 | 欧美不卡视频在线观看 | 久草在线资源福利站 | 午夜精品在线播放 | 亚洲第九十九页 | 18pao国产成人免费视频 | 精品午夜影院 | 性欧美极品xxxx欧美一区二区 | 香蕉成人在线观看 | 日韩黄色片免费看 | 7m视频成人精品分类 | 国产午夜亚洲精品理论片大丰影院 | 亚洲成人入口 | 国产无遮挡一区二区三区毛片日本 | 青草久久av | 欧美日韩国产一区二区三区在线观看 | 久久91亚洲人成电影网站 | 欧美日韩在线视频一区 | 在线免费观看日韩视频 | 国产成人精品区 | 久草成人在线观看 | 717影院理论午夜伦八戒秦先生 | 欧美大电影免费观看 | 黄色高清免费网站 | 亚洲免费资源 |