// 获取拼音首字母方法
//package com.xyzq.hq;
import java.io.*;
/**
*处理拼音类
*提取拼音首字母
*/
public class PinYin{
/**拼音的分割区位码区域
*如 汉字:"啊",区位码:B0A1,B0在前,A1在后面
*/
public static final int[] pinYinRange={
'/u0000',
'/uB0A1',//A
'/ub0c5',//B
'/ub2c1',//C
'/ub4ee',//D
'/ub6ea',//E
'/ub7a2',//F
'/ub8c1',//G
'/ub9fe',//H
'/u0000',//I
'/ubbf7',//J
'/ubfa8',//K
'/uc0ac',//L
'/uc2e8',//M
'/uc4c3',//N
'/uc5b6',//O
'/uc5be',//P
'/uc6da',//Q
'/uc8bb',//R
'/uc8f6',//S
'/ucbfa',//T
'/u0000',//U
'/u0000',//V
'/ucdda',//W
'/ucef4',//X
'/ud1b9',//Y
'/ud4d1',//Z
'/uFFFF'
};
public static final int chrPinYinStart='/uA3C1';//全角字符AB..Z
/**提取拼音首字母
*@param tempstr 取首字母的字符串
*@return 返回首字母
*/
public static String getPinYin(String tempstr)
{
if(tempstr==null)
return null;
byte[] tempArr=tempstr.trim().getBytes();
System.out.println("byte[].length="+tempArr.length);
String pinYin="";
char tempchar;
int value=0;
int i=0;
while(i<tempArr.length){
if(tempArr[i]>0){
if(((char)(tempArr[i])!=' ')&&((char)(tempArr[i])!='-'))
pinYin+=(char)(tempArr[i]);
i++;
continue;
}
value=(tempArr[i]<0?(tempArr[i]+256):tempArr[i])*256+(tempArr[i+1]<0?tempArr[i+1]+256:tempArr[i+1]);
//判断是否是全角字符
if (value>=chrPinYinStart && value<chrPinYinStart+26){//26个字母
tempchar=(char)(value -chrPinYinStart +65);//65为A
pinYin+=tempchar;
}else{
/*System.out.println(Integer.toHexString(value));*/
for(int j=0;j<pinYinRange.length;j++){
if(pinYinRange[j]>value){
if(j==0)
pinYin+="A";
else if(j+65-1=='J')//因为汉语内没有以“I”开头的拼音,遇到这种情况就是遇到了“H”
pinYin+="H";
else if(j+65-1=='W')//没有以“U、V”开头的拼音,遇到这种情况就是遇到了“T”
pinYin+="T";
else{
tempchar=(char)(j+65-1-1);//-1-1的原因是因为-1A从1指针开始,另外一个1减是因为实际的拼音在j-1位置
pinYin+=tempchar;
}
break;
}
}
}
i+=2;
}
return pinYin;
}
public static void main(String[] s)
{
if(s.length!=1) {
System.out.println("please using one arg");
System.exit(0);
}
System.out.println("字母="+getPinYin(s[0]));//A
}
}