全角カナ(全角ひらがな) ->半角カナ に変換


ゆっこ  2007-04-22 01:49:35  No: 25875

全角カナ     ->半角カナ
全角ひらがな ->半角カナ

に変換したいと思ってますが、確認できません。
Delphi .net で作成中です。
よろしくお願いします。


IME  2007-04-22 10:14:57  No: 25876

LCMapString API かなって思ってたけどなかった。
http://homepage2.nifty.com/starz/delphi/delphifaq.html
のZenToHankが参考になるかと思う。試してないけど。
ちなみに.netで動くのかも良くわかりません。(書いたことが無いので)


Fusa  2007-04-24 09:48:05  No: 25877

こちらも簡単でいいと思いますよ。

function MapStringW(const Source: WideString; dwMapFlags: Longword): WideString;
var
  Len: Integer;
begin
  Result := '';
  Len := LCMapStringW(LOCALE_USER_DEFAULT, dwMapFlags,
           PWideChar(Source), -1, nil, 0);
  SetLength(Result, Len-1);
  LCMapStringW(LOCALE_USER_DEFAULT, dwMapFlags,
    PWideChar(Source), Length(Source)+1,
    PWideChar(Result), Len);
  //LOCALE_USER_DEFAULTの代わりに
  //GetUserDefaultLCIDを指定してもいいみたい
end;

function KataToHira(const Source: WideString): WideString;
begin
  Result := MapStringW(Source, LCMAP_HIRAGANA);
end;

function HiraToKata(const Source: WideString): WideString;
begin
  Result := MapStringW(Source, LCMAP_KATAKANA);
end;

function ZenkakuToHankaku(const Source: WideString): WideString;
begin
  Result := MapStringW(Source, LCMAP_HALFWIDTH);
end;

function HankakuToZenkaku(const Source: WideString): WideString;
begin
  Result := MapStringW(Source, LCMAP_FULLWIDTH);
end;


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

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






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