pinyin4j 介绍
pinyin4j 是一个支持将简体和繁体中文转换到成拼音的Java开源类库
- 支持同一汉字有多个发音
- 还支持拼音的格式化输出,比如第几声之类的,
- 同时支持简体中文、繁体中文转换为拼音…使用起来也非常简单。
下面是其官方网址,其中提供了下载:官方下载地址
<!-- https://mvnrepository.com/artifact/com.belerweb/pinyin4j -->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
常用方法
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
// 控制大小写
// UPPERCASE:大写 (ZHONG)
// LOWERCASE:小写 (zhong)
defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
// WITHOUT_TONE:无音标 (zhong)
// WITH_TONE_NUMBER:1-4数字表示英标 (zhong4)
// WITH_TONE_MARK:直接用音标符(必须WITH_U_UNICODE否则异常) (zhòng)
defaultFormat.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER);
// WITH_V:用v表示ü (nv)
// WITH_U_AND_COLON:用"u:"表示ü (nu:)
// WITH_U_UNICODE:直接用ü (nü)
defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
// oHanyuPinyinStringArray如果传入的字符不是汉字不能转换成拼音,那么会直接返回null。
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重', defaultFormat);
工具类
public static String getPingYin(String inputStr) {
if (inputStr == null || "".equals(inputStr))
return "";
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);
StringBuilder pYStr = new StringBuilder();
char[] input = inputStr.trim().toCharArray();
try {
for (int i = 0; i < input.length; i++) {
if (Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+"))
pYStr.append(PinyinHelper.toHanyuPinyinStringArray(input[i], format)[0]);
else if (!(input[i] == ' '))//过滤空格
pYStr.append(input[i]);
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
return pYStr.toString();
}
参考 :
https://sourceforge.net/projects/pinyin4j/files/
https://www.jianshu.com/p/57a6600d2862