Delphi XE 获取汉字拼音首字母

unction  CnPYIndex( const  CnString: string): string;
{
  返回中文的拼音首字母
}
const
  ChinaCode: 
array [ 0 .. 25 0 .. 1 of  Integer  =  (( 1601 1636 ), ( 1637 1832 ), ( 1833 2077 ),
    (
2078 2273 ), ( 2274 2301 ), ( 2302 2432 ), ( 2433 2593 ), ( 2594 2786 ), ( 9999 0000 ),
    (
2787 3105 ), ( 3106 3211 ), ( 3212 3471 ), ( 3472 3634 ), ( 3635 3722 ), ( 3723 3729 ),
    (
3730 3857 ), ( 3858 4026 ), ( 4027 4085 ), ( 4086 4389 ), ( 4390 4557 ), ( 9999 0000 ),
    (
9999 0000 ), ( 4558 4683 ), ( 4684 4924 ), ( 4925 5248 ), ( 5249 5589 ));
var
  i, j, HzOrd, l_iHz: Integer;
  Hz: AnsiString;
begin
  i :
=    1 ;
  l_iHz :
= 1 ;
  
while  i  <=  Length(CnString)  do
  
begin
    Hz :
=  CnString[i];
    
if  (Hz[l_iHz]  >=  # 160 and  (Hz[l_iHz  + 1 >=  # 160 then
    
begin
      HzOrd :
=  (Ord(Hz[l_iHz])  - 160 * 100 +  Ord(Hz[l_iHz  + 1 ])  - 160 ;
      
for  j : = 0 to 25 do
      
begin
        
if  (HzOrd  >=  ChinaCode[j][ 0 ])  and  (HzOrd  <=  ChinaCode[j][ 1 ])  then
        
begin
          Result :
=  Result  +  Char(Byte( ' A ' +  j); // 改A为a就全部是小写
          Break;
        
end ;
      
end ;
    
end
    
else
      Result :
=  Result  +  CnString[i];
    Inc(i);
  
end ;

end;


转自:http://www.cnblogs.com/hnxxcxg/archive/2012/05/10/2494747.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值