在实际项目中我们经常需要将汉字转换为中文全拼,以便搜索等功能。
<font>涉及到的罐子</font>
<dependency>
<span style="white-space:pre"> </span><groupId>net.sourceforge</groupId>
<span style="white-space:pre"> </span><artifactId>pinyin4j</artifactId>
<span style="white-space:pre"> </span><version>2.5.0</version>
</dependency>
闲话少说,直接看代码:
包com.ilucky.pinyin;
进口net.sourceforge.pinyin4j.PinyinHelper;
进口net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
进口net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
进口net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
进口net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
进口net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
/ **
* @author IluckySi
* @Since 20141104
* /
公共类TestPinYin {
/ **
*将字符串中的汉字替换为汉字的全拼。
* @参数海峡
* @返回字符串
* /
公共静态字符串getPinYin(字符串str){
字符串结果=“”;
炭[] = t1的str.toCharArray();
HanyuPinyinOutputFormat格式=新HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);
尝试{
的for(int i = 0; I <t1.length;我++){
//判断是不是汉字。
如果(Character.toString(T1 [I])匹配(“[\\ u4E00 - \\ u9FA5] +”)){
结果+ = PinyinHelper.toHanyuPinyinStringArray(t1的[i]于,格式)[0];
}其他{
结果+ = Character.toString(t1的[I]);
}
}
}赶上(BadHanyuPinyinOutputFormatCombination E){
e.printStackTrace();
}
返回结果;
}
/ **
*将字符串中的汉字替换为汉字的全拼,并且每个汉字全拼的首字母大写。
* @参数海峡
* @返回字符串
* /
公共静态字符串getPinYin2(字符串str){
字符串结果=“”;
的char [] charArray = str.toCharArray();
HanyuPinyinOutputFormat格式=新HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);
尝试{
的for(int i = 0; I <charArray.length;我++){
//判断是不是汉字。
如果(Character.toString(charArray [I])匹配(“[\\ u4E00 - \\ u9FA5] +”)){
串老= PinyinHelper.toHanyuPinyinStringArray(charArray [I],格式)[0];
结果+ = old.substring(0,1)的ToString()与toUpperCase()+ old.substring(1)。
}其他{
结果+ = Character.toString(charArray [I]);
}
}
}赶上(BadHanyuPinyinOutputFormatCombination E){
e.printStackTrace();
}
返回结果;
}
/ **
*将字符串中的汉字替换为汉字的首字母。
* @参数海峡
* @返回字符串
* /
公共静态字符串getPinYinHeadChar(字符串str){
字符串结果=“”;
的for(int i = 0; I <str.length();我++){
焦炭字= str.charAt(I);
//判断是不是汉字。
的String [] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(字);
如果(pinyinArray!= NULL){
结果+ = pinyinArray [0] .charAt(0);
}其他{
结果+ =字;
}
}
返回结果;
}
公共静态无效的主要(字串[] args){
字符串str =“W中s华我人升民ü共Ç和ķ国Y”;
//将字符串中的汉字替换为汉字的全拼。
的System.out.println(getPinYin(STR));
//将字符串中的汉字替换为汉字的全拼,并且每个汉字全拼的首字母大写。
的System.out.println(getPinYin2(STR));
//将字符串中的汉字替换为汉字全拼的首字母。
的System.out.println(getPinYinHeadChar(STR));
//将字符串中的汉字替换为汉字全拼的首字母,并且大写。
的System.out.println(getPinYinHeadChar(STR).toUpperCase());
}
}
/ **
输出结果:
wzhongshuairenlminugongchekguoy
wZhongsHuaiRenlMinuGongcHekGuoy
wzshirlmugchkgy
WZSHIRLMUGCHKGY
* /