需求:获取中文字符串每个字的拼音首字母实现如下:
function GetPy(const HZ: string): string;
var
HZ_bm1, HZ_bm2, I: Integer;
int_char, tem_char, retu_char: string;
uni_char: widestring;
int_hex: Integer;
begin
uni_char := HZ; // ansi转换到 unicode 便于取字符串的个数汉字和英文宽度一致
for I := 1 to length(uni_char) do
begin
tem_char := uni_char[I]; // 宽字符取一个字在赋值到ansi 以便取gb2312字符
if length(tem_char) = 2 then
begin
HZ_bm1 := ord(tem_char[1]); // ansi字符取高位和低位的整数
HZ_bm2 := ord(tem_char[2]);
int_char := IntToHex(HZ_bm1, 2) + IntToHex(HZ_bm2, 2); // 直接利用字符合并成16进制整数
int_hex := StrToInt('$' + int_char); // 在把16进制字符转换成整数
case int_hex of
$B0A1 .. $B0C4:
retu_char := 'A';
$B0C5 .. $B2C0:
retu_char := 'B';
$B2C1 .. $B4ED:
retu_char := 'C';
$B4EE .. $B6E9:
retu_char := 'D';
$B6EA .. $B7A1:
retu_char := 'E';
$B7A2 .. $B8C0:
retu_char := 'F';
$B8C1 .. $B9FD:
retu_char := 'G';
$B9FE .. $BBF6:
retu_char := 'H';
$BBF7 .. $BFA5:
retu_char := 'J';
$BFA6 .. $C0AB:
retu_char := 'K';
$C0AC .. $C2E7:
retu_char := 'L';
$C2E8 .. $C4C2:
retu_char := 'M';
$C4C3 .. $C5B5:
retu_char := 'N';
$C5B6 .. $C5BD:
retu_char := 'O';
$C5BE .. $C6D9:
retu_char := 'P';
$C6DA .. $C8BA:
retu_char := 'Q';
$C8BB .. $C8F5:
retu_char := 'R';
$C8F6 .. $CBF9:
retu_char := 'S';
$CBFA .. $CDD9:
retu_char := 'T';
$CDDA .. $CEF3:
retu_char := 'W';
$CEF4 .. $D188:
retu_char := 'X';
$D1B9 .. $D4D0:
retu_char := 'Y';
$D4D1 .. $D7F9:
retu_char := 'Z';
else
retu_char := Char(0);
end;
end
else
begin
retu_char := UpperCase(tem_char);
end;
Result := Result + retu_char;
end;
end;
例:
传入 博客 得到结果 BK