|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"半角カタカナ撲滅!"
自作ソフトにHTML変換機能を付ける際に作った関数です。MES 12 #954に
書き込んだのと基本的には同じですがマルチバイト判定だけ変更しています。
MES 15 #225にかなり本格的なのがあったのですが、全てを全角にするので
なくただ半角カナだけサクッと狙い撃ちしたかったので自作しました。
{全角カタカナ文字コード}
const
Zenk: array[$A1..$DF,1..2]of byte=
(($81,$42),($81,$75),($81,$76),($81,$41),
($81,$45),($83,$92),($83,$40),($83,$42),
($83,$44),($83,$46),($83,$48),($83,$83),
($83,$85),($83,$87),($83,$62),($81,$5B),
($83,$41),($83,$43),($83,$45),($83,$47),
($83,$49),($83,$4A),($83,$4C),($83,$4E),
($83,$50),($83,$52),($83,$54),($83,$56),
($83,$58),($83,$5A),($83,$5C),($83,$5E),
($83,$60),($83,$63),($83,$65),($83,$67),
($83,$69),($83,$6A),($83,$6B),($83,$6C),
($83,$6D),($83,$6E),($83,$71),($83,$74),
($83,$77),($83,$7A),($83,$7D),($83,$7E),
($83,$80),($83,$81),($83,$82),($83,$84),
($83,$86),($83,$88),($83,$89),($83,$8A),
($83,$8B),($83,$8C),($83,$8D),($83,$8F),
($83,$93),($81,$4A),($81,$4B));
{半角カナ殺し}
function KillHank(s: string): string;
begin
Result:= '';
while Length(s)> 0 do
begin
if s[1] in [#$A1..#$DF] then //Hank
begin
Result:= Result+ chr(Zenk[ord(S[1]),1])+ chr(Zenk[ord(s[1]),2]);
Delete(s,1,1);
end
else
if IsDBCSLeadByte(ord(s[1])) then //Zenk
begin
Result:= Result+ s[1]+ s[2];
Delete(s,1,2);
end
else //Others
begin
Result:= Result+ s[1];
Delete(s,1,1);
end;
end;
end;
折井 哲
VZX00324
Original document by 折井 哲 氏 ID:(VZX00324)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|