全角カタカナを半角カタカナに変換する方法を教えてください。
今まで全角や半角のことは考えたことがなかったのですが、カタカナの場合、
ア→アで半角1文字、ダ→ダで半角2文字と、濁音がつくと濁音分で半角1文字なんですね。それから変換するのはカタカナのみで空欄の場合は変換しないでほしいのですが。
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;
お勧めサイト
http://www.wwlnk.com/boheme/
の中のDelphi Tipsにあります。
> http://www.wwlnk.com/boheme/
> の中のDelphi Tipsにあります。
ttp://www.wwlnk.com/boheme/delphi/tips/tec1320.htm
それは、↑のことだと思うけど、LCMapString は、全角スペースや
「#」「$」等の記号も変換するでしょ?
"カタカナだけ変換したい"となると、変換しすぎ。
逆に、全角スペースと全角カタカナしかない文字列に限定できるのであれば、
LCMapString で全て変換して、igy さんの例示した StringReplace を使って、
半角スペースを全角に戻せばいいかと。
ツイート | ![]() |