文字转拼音
引用
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
工具类
public class PinyinUtils {
HanyuPinyinOutputFormat format = null;
public static enum Type {
UPPERCASE, // 全部大写
LOWERCASE, // 全部小写
FIRSTUPPER // 首字母大写
}
public PinyinUtils() {
format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
}
public String toPinYin(String str) throws BadHanyuPinyinOutputFormatCombination {
return toPinYin(str, "", Type.UPPERCASE);
}
public String toPinYin(String str, String spera) throws BadHanyuPinyinOutputFormatCombination {
return toPinYin(str, spera, Type.UPPERCASE);
}
/**
* 将str转换成拼音,如果不是汉字或者没有对应的拼音,则不作转换 如: 明天 转换成 MINGTIAN
*
* @param str:要转化的汉字
* @param spera:转化结果的分割符
* @return
* @throws BadHanyuPinyinOutputFormatCombination
*/
public String toPinYin(String str, String spera, Type type) throws BadHanyuPinyinOutputFormatCombination {
if (str == null || str.trim().length() == 0)
return "";
if (type == Type.UPPERCASE)
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
else
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
String py = "";
String temp = "";
String[] t;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if ((int) c <= 128)
py += c;
else {
t = PinyinHelper.toHanyuPinyinStringArray(c, format);
if (t == null)
py += c;
else {
temp = t[0];
if (type == Type.FIRSTUPPER)
temp = t[0].toUpperCase().charAt(0) + temp.substring(1);
py += temp + (i == str.length() - 1 ? "" : spera);
}
}
}
return py.trim();
}
}
本文由 纸鸢's 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2018/09/13 10:46