将汉字翻译成拼音缩写的函数

function GetPyChar( const HZ: AnsiString): string;
const
  HZCode: 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: Integer;
begin
  i := 1 ;
  while i <= Length(HZ) do
    begin
    if (HZ[i] >= #160 ) and (HZ[i + 1 ] >= #160 ) then
    begin
      HzOrd := (Ord(HZ[i]) - 160 ) * 100 + Ord(HZ[i + 1 ]) - 160 ;
      for j := 0 to 25 do
      begin
        if (HzOrd >= HZCode[j][ 0 ]) and (HzOrd <= HZCode[j][ 1 ]) then
        begin
          Result := Result + Char(Byte( 'A' ) + j);
          Break;
        end;
      end;
      Inc(i);
    end else Result := Result + HZ[i];
      Inc(i);
  end;
end;

//测试:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetPyChar( '万一的 Delphi 博客' ));  //结果:WYD Delphi BK
end;


//只单独汉字:
function GetPyFitstChar(HZ: AnsiString): Char;
begin
  case LoWord(HZ[ 1 ]) shl 8 + LoWord(HZ[ 2 ]) 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;

//测试:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetPyFitstChar( '万一的 Delphi 博客' ));  //结果:W
end;

你可能感兴趣的:(函数)