汉字字符串转拼音首字母
方法用到了开源的pinyin4j-2.5.0.jar,从网上搜到了一个方法,改了改
/**
* 取汉字的首字母
*
* @param src
* @param isCapital
* 是否是大写
* @return
*/
public static char[] getHeadByChar(char src, boolean isCapital) {
// 如果不是汉字直接返回
if (src <= 128) {
return new char[] { src };
}
// 获取所有的拼音
String[] pinyingStr = PinyinHelper.toHanyuPinyinStringArray(src);
// 创建返回对象
int polyphoneSize = pinyingStr.length;
char[] headChars = new char[polyphoneSize];
int i = 0;
// 截取首字符
for (String s : pinyingStr) {
char headChar = s.charAt(0);
// 首字母是否大写,默认是小写
if (isCapital) {
headChars[i] = Character.toUpperCase(headChar);
} else {
headChars[i] = headChar;
}
i++;
}
return headChars;
}
/**
* 取汉字串各汉字的首字母
*
* @param str
* @param isCapital
* 是否是大写
* @return
*/
public static String getHeaderByChar(String str, boolean isCapital) {
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
if (!Pattern.matches("[\u4E00-\u9FA5]", String.valueOf(str
.charAt(i)))) {
stringBuffer.append(str.charAt(i));
} else {
Map<String, Object> map = new HashMap<String, Object>();
StringBuffer sb = new StringBuffer();
char[] repeat = getHeadByChar(str.charAt(i), isCapital);
for (int j = 0; j < repeat.length; j++) {
map.put(repeat[j] + "", null);
}
Iterator it = map.keySet().iterator();
while (it.hasNext()) {
sb.append((String) it.next());
}
stringBuffer.append(sb.toString().charAt(0) + "");
}
}
return stringBuffer.toString();
}
测试:
public static void main(String[] s) {
System.out.println(getHeaderByChar("(璀,,!ab} “”c璨", true));
}
public static void main(String[] s) {
System.out.println(getHeaderByChar("我是一个程序猿", true));
}
打印结果:
(C,,!ab} “”cC
WSYGCXY

浙公网安备 33010602011771号