首先很不好意思,由於工作實在太忙,週末也好多時間忙在工作上,所以這兩年博客更新地不勤。爲了避免被lead誤解成“在論壇上鬼混”,所以以後發貼儘量少寫文字,直截了當貼代碼。爲什麼這麼做,主要是在平常工作中可能會遇上一些問題,在解決後總想將一些代碼與大家分享(當然如果網上有許多類似代碼了就不貼了,我貼的要麼是網上有很多用下來不爽的或者甚至有拋異常的,所以才貼上自己的代碼。本博客的原則是如果不寫轉載,那100%原創. 好了,這是第一篇,以後就啥都不說,一切盡在註釋中。
import net.sourceforge.pinyin4j.*;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
public class Pinyin4jtest
{
/**
* 輸入漢字字符串,得到其每個字的拼音首字母
* @param chinese 漢字與其它混雜的源字符串
* @return 首字母(不是漢字的部分原樣返回)
* @throws BadHanyuPinyinOutputFormatCombination
*/
public static String getPinyIninitialsLetters(String chinese) throws BadHanyuPinyinOutputFormatCombination
{
String rtnStr="";
char singlechar;
HanyuPinyinOutputFormat format=new HanyuPinyinOutputFormat();
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); //取得拼音的格式爲不帶聲調號
for(int i=0;i<chinese.length();i++)
{
singlechar=chinese.charAt(i);
String[] pinyin=PinyinHelper.toHanyuPinyinStringArray(singlechar,format);
if(pinyin==null||pinyin.length==0)
{
rtnStr+=singlechar;
}
else{
rtnStr+=pinyin[0].substring(0, 1);//多音字時只取第一個音,並取得其拼音手字母
}
}
return rtnStr;
}
/**
* 最簡單的測試主程序,也不去用Junit了,好讓大家省點jar包
* @param args
* @throws BadHanyuPinyinOutputFormatCombination
*/
public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination
{
String pinyinini=getPinyIninitialsLetters("中國第1峯").toUpperCase();
System.out.println(pinyinini);
}
}
//以上例子用到的 jar包為pinyin4j-2.5.0.jar,你可以在sourceforge官方得到最新版本