全角カナ ->半角カナ
全角ひらがな ->半角カナ
に変換したいと思ってますが、確認できません。
Delphi .net で作成中です。
よろしくお願いします。
LCMapString API かなって思ってたけどなかった。
http://homepage2.nifty.com/starz/delphi/delphifaq.html
のZenToHankが参考になるかと思う。試してないけど。
ちなみに.netで動くのかも良くわかりません。(書いたことが無いので)
こちらも簡単でいいと思いますよ。
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;
ツイート | ![]() |