Delphi XE 获取汉字拼音首字母

本文介绍了一个用于从中文字符串中提取每个汉字对应的拼音首字母的Delphi/Pascal函数实现。该函数通过判断汉字的Unicode编码范围来确定其对应的拼音首字母,并能够处理多种中文字符。
unction CnPYIndex(const CnString: string): string;
{
  返回中文的拼音首字母
}
const
  ChinaCode: 
array[0..250..1of Integer = ((16011636), (16371832), (18332077),
    (
20782273), (22742301), (23022432), (24332593), (25942786), (99990000),
    (
27873105), (31063211), (32123471), (34723634), (36353722), (37233729),
    (
37303857), (38584026), (40274085), (40864389), (43904557), (99990000),
    (
99990000), (45584683), (46844924), (49255248), (52495589));
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] >= #160and (Hz[l_iHz +1>= #160then
    
begin
      HzOrd :
= (Ord(Hz[l_iHz]) -160*100+ Ord(Hz[l_iHz +1]) -160;
      
for j :=0to25do
      
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、付费专栏及课程。

余额充值