Delphi中取得汉字的首字母

function Tdm.GetHzPy( const  AHzStr:  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: integer;
//     Hz: string[2];
begin
    i :
=   1 ;
    
while  i  <=  Length(AHzStr)  do
    begin
        
if  (AHzStr[i]  >=  # 160 ) and (AHzStr[i  +   1 ]  >=  # 160 ) then
        begin
            HzOrd :
=  (Ord(AHzStr[i])  -   160 )  *   100   +  Ord(AHzStr[i  +   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);
                    
break ;
                end;
            end;
            Inc(i);
        end 
else  Result : =  Result  +  AHzStr[i];
        Inc(i);
    end;
end;

很久前的代码,忘记了来源,很好用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值