Java 根據漢語字符串獲得對應的拼音字符串或者拼音首字母字符串等操作,需要添加jar包:
代碼實現:
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
|
import java.util.regex.Matcher; import java.util.regex.Pattern; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; /*** * 漢字工具類 * @author csharper * @since 2014.12.26 * */ public class ChineseCharacterUtil { /*** * 將漢字轉成拼音(取首字母或全拼) * @param hanzi * @param full 是否全拼 * @return */ public static String convertHanzi2Pinyin(String hanzi, boolean full) { /*** * ^[\u2E80-\u9FFF]+$ 匹配所有東亞區的語言 * ^[\u4E00-\u9FFF]+$ 匹配簡體和繁體 * ^[\u4E00-\u9FA5]+$ 匹配簡體 */ String regExp= "^[\u4E00-\u9FFF]+$" ; StringBuffer sb= new StringBuffer(); if (hanzi== null || "" .equals(hanzi.trim())) { return "" ; } String pinyin= "" ; for ( int i= 0 ;i<hanzi.length();i++) { char unit=hanzi.charAt(i); if (match(String.valueOf(unit),regExp)) //是漢字,則轉拼音 { pinyin=convertSingleHanzi2Pinyin(unit); if (full) { sb.append(pinyin); } else { sb.append(pinyin.charAt( 0 )); } } else { sb.append(unit); } } return sb.toString(); } /*** * 將單個漢字轉成拼音 * @param hanzi * @return */ private static String convertSingleHanzi2Pinyin( char hanzi) { HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); String[] res; StringBuffer sb= new StringBuffer(); try { res = PinyinHelper.toHanyuPinyinStringArray(hanzi,outputFormat); sb.append(res[ 0 ]); //對于多音字,只用第一個拼音 } catch (Exception e) { e.printStackTrace(); return "" ; } return sb.toString(); } /*** * @param str 源字符串 * @param regex 正則表達式 * @return 是否匹配 */ public static boolean match(String str,String regex) { Pattern pattern=Pattern.compile(regex); Matcher matcher=pattern.matcher(str); return matcher.find(); } public static void main(String[] args) { System.out.println(convertHanzi2Pinyin( "我是中國人123abc" , true )); } } |
運行結果:
(1)全拼:
woshizhongguoren123abc
(2)首字母:
wszgr123abc
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
原文鏈接:http://www.cnblogs.com/javasharp/p/4186710.html