Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。
拼音输出格式可以定制。
pinyin4j 调用入口为net.sourceforge.pinyin4j.PinyinHelper
示例代码:
1. import
2. import
3. import
4. import
5. import
6.
7. /**
8. * 汉语拼音 帮助类
9. *
10. * @author lili
11. *
12. */
13. public class
14. /**
15. * 获取汉字串拼音
16. * @param strCN
17. * @return 汉字串拼音
18. * @throws BadHanyuPinyinOutputFormatCombination
19. */
20. public static
21. throws
22. if(null
23. return null;
24. }
25. new
26. char[] charOfCN = strCN.toCharArray();
27. new
28. defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
29. defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
30. for (int i = 0; i < charOfCN.length; i++) {
31. // 是否为中文字符
32. if (charOfCN[i] > 128) {
33. String[] spellArray = PinyinHelper.toHanyuPinyinStringArray(
34. charOfCN[i], defaultFormat);
35. if (null
36. 0]);
37. else{
38. spell.append(charOfCN[i]);
39. }
40. else
41. spell.append(charOfCN[i]);
42. }
43. }
44. return
45. }
46. /**
47. * 获取汉字串 拼音首字母
48. * @param strCN
49. * @return 拼音首字母
50. * @throws BadHanyuPinyinOutputFormatCombination
51. */
52. public static
53. throws
54. if(null
55. return null;
56. }
57. new
58. char[] charOfCN = strCN.toCharArray();
59. new
60. format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
61. format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
62. for (int i = 0; i < charOfCN.length; i++) {
63. // 是否为中文字符
64. if (charOfCN[i] > 128) {
65. String[] spellArray = PinyinHelper.toHanyuPinyinStringArray(
66. charOfCN[i], format);
67. // 取拼音首字母
68. if (null
69. 0].charAt(0));
70. else{
71. firstSpell.append(charOfCN[i]);
72. }
73. else
74. firstSpell.append(charOfCN[i]);
75. }
76. }
77. return
78. }
79. /**
80. * 获取 汉字串拼音首字母 & 汉字串拼音
81. *
82. * @param strCN
83. * @return 下标0:汉字串拼音首字母;下标1:汉字串拼音
84. * @throws BadHanyuPinyinOutputFormatCombination
85. */
86. public static
87. throws
88. if(null
89. return null;
90. }
91. new
92. new
93. char[] charOfCN = strCN.toCharArray();
94. new
95. defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
96. defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
97. for (int i = 0; i < charOfCN.length; i++) {
98. // 是否为中文字符
99. if (charOfCN[i] > 128) {
100. String[] spellArray = PinyinHelper.toHanyuPinyinStringArray(
101. charOfCN[i], defaultFormat);
102. if (null
103. 0].charAt(0));
104. 0]);
105. else{
106. firstSpell.append(charOfCN[i]);
107. spell.append(charOfCN[i]);
108. }
109. else
110. firstSpell.append(charOfCN[i]);
111. spell.append(charOfCN[i]);
112. }
113. }
114. return new
115. }
116.
117. }
2.测试
1. import
2. import
3.
4. import
5.
6. public class
7. /**
8. * @param args
9. */
10. public static void
11. try
12. testPinyin();
13. catch
14. e1.printStackTrace();
15. }
16. }
17. static void testPinyin() throws
18. null;
19. null;
20. "< 中國-China-중국 >";
21.
22. pinyin = PinyinUtils.getFirstHanyuPinyin( s);
23. "getFirstHanyuPinyin("+s+")......["+pinyin+"]");
24.
25. pinyin = PinyinUtils.getHanyuPinyin( s);
26. "getHanyuPinyin("+s+")......["+pinyin+"]");
27.
28. firstAndPinyin = PinyinUtils.getFirstAndHanyuPinyin( s);
29. "getFirstAndHanyuPinyin("+s+")......"+Arrays.asList(firstAndPinyin));
30. }
31.
32. }