トップへ(mam-mam.net/)

半角カナだけを全角カナに変換する

検索:

「半角カナだけを全角カナに変換する」

半角カナだけを全角カナに変換するには

回答

半角を全角に変換するにはLCMapStringというAPI関数を呼び出せばよい。
よって、半角カナのみをLCMapString関数で変換すればよい。

ソース

function HanToZen(str:String):String;
var buf:array [0..1024] of Char;
begin
  LCMapString(GetUserDefaultLCID,LCMAP_FULLWIDTH,PChar(str),Length(Str)+1,Buf,1024);
  Result:=String(Buf);
end;

function KanaHanToZen(st:wideString):string;
var i:integer;
    stTmp :wideString;
    stKana:wideString;
    chKana:wideString;
begin
  stKana:='';
  stTmp:='';
  for i:=1 to Length(st) do
  begin
    chKana:=Midstr(st,i,1);
    if((ord(chKana[1]))>=65377) and ((ord(chKana[1]))<=65439) then
      stKana:=stKana+chKana;
  end
  else
  begin
    if(Length(stKana)>0 then
    begin
      stTmp:=stTmp+HanToZen(stKana);
      stKana:='';
    end;
    stTmp:=stTmp+chKana;
  end;

  if Length(stKana)>0 then
    stTmp:=stTmp+HanToZen(stKana);
  KanaHanToZen:=stTmp;
end;