根据汉字内码获取汉字的拼音码

/  
  //   FileName:   PY.pas  
  //    
  //   Copyright   (C)   1999   By   Zhang   Qing  
  //  
  //   You   can   use   and   modify   it   ,but   please   send   me   an   email.  
  //  
  //   E-Mail:   zhangqing@bbook.net  
  /  
  unit   PY;  
   
  interface  
  uses   sysutils;  
   
  //   获取汉字的拼音首字符,这个函数将用在GetPYIndexStr   中.  
  function   GetPYIndexChar(strChinese:   string;   bUpCase:   Boolean   =   True):   char;  
   
  //   获取多个汉字的拼音首字符组成的字符串.  
  function   GetPYIndexStr(strChinese:   string;   bUpCase:   Boolean   =   True):   string;  
   
  implementation  
   
   
  //   函数:   GetPYIndexChar(strChinese:   string;bUpCase:   Boolean   =   True):   char;  
  //  
  //   函数功能:获取汉字的拼音首字符.  
  //   例:   GetPYIndexChar('程')   将返回'C'.  
  //  
  //   注意:对于多于一个汉字的输入(string类型)只有第一个有效,但不会产生错误  
  //   例如,GetPYIndexChar('程序')也将返回'C'.  
  //  
  //   第二个参数决定返回大写还是小写   ,   缺省为大写   .  
   
  function   GetPYIndexChar(strChinese:   string;bUpCase:   Boolean   =   True):   char;  
  begin  
  //   根据汉字表中拼音首字符分别为“A”至“Z”的汉字内码范围,  
  //   要检索的汉字只需要检查它的内码位于哪一个首字符的范围内,  
  //   就可以判断出它的拼音首字符。  
      case   WORD(strChinese[1])   shl   8   +   WORD(strChinese[2])   of  
          $B0A1..$B0C4   :   result   :=   'A';  
          $B0C5..$B2C0   :   result   :=   'B';  
          $B2C1..$B4ED   :   result   :=   'C';  
          $B4EE..$B6E9   :   result   :=   'D';  
          $B6EA..$B7A1   :   result   :=   'E';  
          $B7A2..$B8C0   :   result   :=   'F';  
          $B8C1..$B9FD   :   result   :=   'G';  
          $B9FE..$BBF6   :   result   :=   'H';  
          $BBF7..$BFA5   :   result   :=   'J';  
          $BFA6..$C0AB   :   result   :=   'K';  
          $C0AC..$C2E7   :   result   :=   'L';  
          $C2E8..$C4C2   :   result   :=   'M';  
          $C4C3..$C5B5   :   result   :=   'N';  
          $C5B6..$C5BD   :   result   :=   'O';  
          $C5BE..$C6D9   :   result   :=   'P';  
          $C6DA..$C8BA   :   result   :=   'Q';  
          $C8BB..$C8F5   :   result   :=   'R';  
          $C8F6..$CBF9   :   result   :=   'S';  
          $CBFA..$CDD9   :   result   :=   'T';  
          $CDDA..$CEF3   :   result   :=   'W';  
          $CEF4..$D188   :   result   :=   'X';  
          $D1B9..$D4D0   :   result   :=   'Y';  
          $D4D1..$D7F9   :   result   :=   'Z';  
          else  
                                result   :=   char(0);  
      end;  
      if   not   bUpCase   then  
      begin   //   转换为小写  
          result   :=   Chr(Ord(result)+32);  
      end;  
  end;  
   
   
  //   函数:   GetPYIndexStr(strChinese:   string;bUpCase:   Boolean   =   True):   string;  
  //  
  //   函数功能:获取多个汉字的拼音首字符组成的字符串.  
  //   例:   GetPYIndexStr('程')   将返回'C'.  
  //           GetPYIndexStr('程序')将返回'CX'.  
  //  
  //   第二个参数决定返回大写还是小写   ,   缺省为大写   .  
   
  function   GetPYIndexStr(strChinese:   string;bUpCase:   Boolean   =   True):   string;  
  var  
      strChineseTemp   :   string;  
      cTemp   :   Char;  
  begin  
      result   :=   '';  
      strChineseTemp   :=   strChinese;  
      while   strChineseTemp<>''   do  
      begin  
          cTemp   :=   GetPYIndexChar(strChineseTemp);  
          if   not   bUpCase   then  
          begin   //   转换为小写  
              cTemp   :=   Chr(Ord(cTemp)+32);  
          end;  
          result   :=   result   +   string(cTemp);  
          strChineseTemp   :=   Copy(strChineseTemp,3,Length(strChineseTemp));  
      end;  
  end;  
   
  end.  

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值