您的位置:首页 > 其它

汉字与全拼的转换!

2014-11-04 19:15 176 查看
在实际项目中我们经常需要将汉字转换为中文全拼,以便搜索等功能。
<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
* /
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: