获取拼音首字母方法

 // 获取拼音首字母方法

 


//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
 }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值