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;
转载于:https://www.cnblogs.com/longqcc/archive/2013/05/18/3086184.html