importjava.io.UnsupportedEncodingException;
/**
*取得给定汉字串的首字母串,即声母串
*Title:ChineseCharToEn
*@date-02-19注:只支持GB2312字符集中的汉字
*/
publicfinalclassChineseCharToEn{
privatefinalstaticint[]li_SecPosValue={1601,1637,1833,2078,2274,
2302,2433,2594,2787,3106,3212,3472,3635,3722,3730,3858,
4027,4086,4390,4558,4684,4925,5249,5590};
privatefinalstaticString[]lc_FirstLetter={"a","b","c","d","e",
"f","g","h","j","k","l","m","n","o","p","q","r","s",
"t","w","x","y","z"};
/**
*取得给定汉字串的首字母串,即声母串
*@paramstr给定汉字串
*@return声母串
*/
publicStringgetAllFirstLetter(Stringstr){
if(str==null||str.trim().length()==0){
return"";
}
String_str="";
for(inti=0;i
_str=_str+this.getFirstLetter(str.substring(i,i+1));
}
return_str;
}
/**
*取得给定汉字的首字母,即声母
*@paramchinese给定的汉字
*@return给定汉字的声母
*/
publicStringgetFirstLetter(Stringchinese){
if(chinese==null||chinese.trim().length()==0){
return"";
}
chinese=this.conversionStr(chinese,"GB2312","ISO8859-1");
if(chinese.length()>1)//判断是不是汉字
{
intli_SectorCode=(int)chinese.charAt(0);//汉字区码
intli_PositionCode=(int)chinese.charAt(1);//汉字位码
li_SectorCode=li_SectorCode-160;
li_PositionCode=li_PositionCode-160;
intli_SecPosCode=li_SectorCode*100+li_PositionCode;//汉字区位码
if(li_SecPosCode>1600&&li_SecPosCode
for(inti=0;i
if(li_SecPosCode>=li_SecPosValue[i]
&&li_SecPosCode
chinese=lc_FirstLetter[i];
break;
}
}
}else//非汉字字符,如图形符号或ASCII码
{
chinese=this.conversionStr(chinese,"ISO8859-1","GB2312");
chinese=chinese.substring(0,1);
}
}
returnchinese;
}
/**
*字符串编码转换
*@paramstr要转换编码的字符串
*@paramcharsetName原来的编码
*@paramtoCharsetName转换后的编码
*@return经过编码转换后的字符串
*/
privateStringconversionStr(Stringstr,StringcharsetName,StringtoCharsetName){
try{
str=newString(str.getBytes(charsetName),toCharsetName);
}catch(UnsupportedEncodingExceptionex){
System.out.println("字符串编码转换异常:"+ex.getMessage());
}
returnstr;
}
publicstaticvoidmain(String[]args){
ChineseCharToEncte=newChineseCharToEn();
System.out.println("获取拼音首字母:"+cte.getAllFirstLetter("北京联席办"));
}
}
控制台输出 获取首字母:bjlxb