- PR -

全角、半角の変換

1
投稿者投稿内容
会議室デビュー日: 2004/08/09
投稿数: 5
投稿日時: 2004-12-11 11:36
全角、半角変換のユーティリティを検討しています。
仕様としては以下のようなイメージになります。

全角英数字は半角に。
「A」なら「A」に
「1」なら「1」に

半角カナは全角に。
「バ」なら「バ」に

自分で実装しようと考えてますが、このようなユーティリティクラス
は実はどこかに存在したりするのでしょうか?

また、実装としては、全角文字テーブル(配列)、半角文字テーブルを
それぞれ持ち、変換対象文字列を1文字ずつ調べて、全角テーブル
にあったら、同じインデックスの半角テーブルの文字で変換する
ようなことを考えています...。

よりシンプルな実装方法があれば教えていただきたいと思っております。

よろしくおねがいいたします。


vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2004-12-11 12:03
以前私もそのようなユーティリティを実装しました。
けっこう必要な機能である割に、これといって決定版があるという話も聞きません。
(もしあれば、私も教えていただきたいです)

実装のポイントとしては…
すべての文字に対して変換テーブルを持つのは効率が良くないと思ったので
以下のような方法を使いました。

半角英数と全角英数はUnicode上でのマッピング順序がある程度同じなので
char型に対して固定の値を足すor引くことで変換できます。
全角ひらがな-全角カタカナの変換もこの方法でできます。
あとは一部Windowsの「半角英数」「全角英数」とはマッピングが
違うところが出てくるのでそこを個別に実装するという感じで。

半角カタカナ-全角カタカナの変換は文字の数が1対1にならないので
変換テーブルを作ったほうが良いと思います。
あと半角カナの並びによっては濁点が余ったりしますので
例外処理も必要です。

全角半角変換と、和暦処理は決定版があると嬉しいですよね…。
1

スキルアップ/キャリアアップ(JOB@IT)