全角カタカナを半角カタカナに変換する方法


コークハイ  2008-09-07 07:52:53  No: 31872

全角カタカナを半角カタカナに変換する方法を教えてください。
今まで全角や半角のことは考えたことがなかったのですが、カタカナの場合、
ア→アで半角1文字、ダ→ダで半角2文字と、濁音がつくと濁音分で半角1文字なんですね。それから変換するのはカタカナのみで空欄の場合は変換しないでほしいのですが。


igy  2008-09-07 20:32:05  No: 31873

StringReplace 関数を使うのは、どうですか?

var
    Zen: array[0..2] of PChar = (
        'ア', 'イ', 'ダ'       // 必要に応じて追加すること
        );
    Han: array[0..2] of PChar = (
        'ア', 'イ', 'ダ'         // 必要に応じて追加すること
        );

function Test(S: String): String;
var
    i: integer;
begin
    for i := Low(Zen) to High(Zen) do
        S := StringReplace(S, Zen[i], Han[i], [rfReplaceAll]);
    Result := S;
end;


かず  2008-09-08 06:06:58  No: 31874

お勧めサイト
http://www.wwlnk.com/boheme/
の中のDelphi Tipsにあります。


ん?  2008-09-08 17:31:40  No: 31875

http://www.wwlnk.com/boheme/
> の中のDelphi Tipsにあります。

ttp://www.wwlnk.com/boheme/delphi/tips/tec1320.htm
それは、↑のことだと思うけど、LCMapString は、全角スペースや
「#」「$」等の記号も変換するでしょ?
"カタカナだけ変換したい"となると、変換しすぎ。

逆に、全角スペースと全角カタカナしかない文字列に限定できるのであれば、
LCMapString で全て変換して、igy さんの例示した StringReplace を使って、
半角スペースを全角に戻せばいいかと。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加