Delphi 取汉字首字母

需求:获取中文字符串每个字的拼音首字母实现如下:
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值