lonlib.pas

来自「在Delphi中获取字符串拼音首码的函数库。」· PAS 代码 · 共 80 行

PAS
80
字号
unit LonLib;

interface

uses Windows,SysUtils, Graphics,Classes,Forms,Controls,Dialogs,StdCtrls,Math
{$IFDEF VER140}
  ,Variants
{$ENDIF}
  ;

//判断是否汉字字符
function IsHz(c: Char): Boolean;
//获取汉字字符拼音首码
function GetHzSM(chhi,chlow: Char): Char;
//回去字符串拼音首码
function GetStrSM(S: string): string;

implementation


function IsHz(c: Char): Boolean;
begin
  Result := Ord(c) >= $80;
end;

function GetHzSM(chhi,chlow: Char): Char;
begin
  case WORD(chhi) shl 8 + WORD(chlow) of
    $B0A1..$B0C4 : Result := 'A';
    $B0C5..$B2C0 : Result := 'B';
    $B2C1..$B4ED : Result := 'C';
    $B4EE..$B6E9 : Result := 'D';
    $B6EA..$B7A1 : Result := 'E';
    $B7A2..$B8C0 : Result := 'F';
    $B8C1..$B9FD : Result := 'G';
    $B9FE..$BBF6 : Result := 'H';
    $BBF7..$BFA5 : Result := 'J';
    $BFA6..$C0AB : Result := 'K';
    $C0AC..$C2E7 : Result := 'L';
    $C2E8..$C4C2 : Result := 'M';
    $C4C3..$C5B5 : Result := 'N';
    $C5B6..$C5BD : Result := 'O';
    $C5BE..$C6D9 : Result := 'P';
    $C6DA..$C8BA : Result := 'Q';
    $C8BB..$C8F5 : Result := 'R';
    $C8F6..$CBF9 : Result := 'S';
    $CBFA..$CDD9 : Result := 'T';
    $CDDA..$CEF3 : Result := 'W';
    $CEF4..$D188 : Result := 'X';
    $D1B9..$D4D0 : Result := 'Y';
    $D4D1..$D7F9 : Result := 'Z';
    else Result := char(0);
  end;
end;

function GetStrSM(S: string): string;
var
  l,p: Integer;
begin
  Result := '';
  l := Length(S);
  if l = 0 then Exit;
  p := 1;
  while p <= l do
  begin
    if IsHz(S[p]) then
    begin
      Result := Result + GetHZSM(S[p],S[p + 1]);
      Inc(p,2);
    end else begin
      Result := Result + S[p];
      Inc(p,1);
    end;
  end;
end;


end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?