本帖最后由 wangbyn 于 2022-11-16 17:56 编辑
写了一个根据汉字获取拼音字符串的工具类,需要用到pinyin4j-2.5.0.jar包。
废话不多说上代码。
[Java] 纯文本查看 复制代码 package com.xxx.util;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
/**
* 根据汉字获取拼音处理
* @AuThor wangbyn
*/
public class GetPinyin {
/**
* 得到 全拼
* @Param src
* @return
*/
public static String getPingYin(String src) {
char[] t1 = null;
t1 = src.toCharArray();
String[] t2 = new String[t1.length];
HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
t3.setVCharType(HanyuPinyinVCharType.WITH_V);
StringBuffer t4 = new StringBuffer();
int t0 = t1.length;
try {
for (char c : t1) {
// 判断是否为汉字字符
if (Character.toString(c).matches(
"[\\u4E00-\\u9FA5]+")) {
t2 = PinyinHelper.toHanyuPinyinStringArray(c, t3);
t4.append(t2[0]);
} else {
t4.append(Character.toString(c));
}
}
return t4.toString();
} catch (BadHanyuPinyinOutputFormatCombination e1) {
e1.printStackTrace();
}
return t4.toString();
}
/**
* 得到中文首字母
* @param str
* @return
*/
public static String getPinYinHeadChar(String str) {
StringBuffer convert = new StringBuffer();
for (int j = 0; j < str.length(); j++) {
char word = str.charAt(j);
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
if (pinyinArray != null) {
convert.append(pinyinArray[0].charAt(0));
} else {
convert.append(word);
}
}
return convert.toString();
}
public static void main(String[] args) {
String cnStr = "俺没有文化";
System.out.println(getPingYin(cnStr));
System.out.println(getPinYinHeadChar(cnStr));
}
}
|