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 ;
{
返回中文的拼音首字母
}
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