importjava.io.UnsupportedEncodingException;
/**
*取得给定汉字串的首字母串,即声母串
*<p>Title:ChineseCharToEn</p>
*<p>@authorjaverQQ:84831612</p>
*@version1.0
*@date2004-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.length();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<5590)
{
for(inti=0;i<23;i++)
{
if(li_SecPosCode>=li_SecPosValue[i]&&
li_SecPosCode<li_SecPosValue[i+1])
{
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;
}
}
/**
*测试程序
*<p>Title:JaverTest</p>
*/
publicclassJaverTest
{
publicstaticvoidmain(String[]args)
{
ChineseCharToEncte=newChineseCharToEn();
System.out.println(""夜未眠"的首个拼音字母是:"+cte.getFirstLetter("夜未眠"));
System.out.println(""Javer夜未眠"的首个拼音字母是:"+cte.getFirstLetter("Javer夜未眠"));
System.out.println(""Javer夜未眠"的全部字母的拼音字母是:"+cte.getAllFirstLetter("Javer夜未眠"));
}
}