Javaで全角から半角への変換方法とは?

このQ&Aのポイント
  • Javaで文字列の中に全角文字があれば、単純に半角に変換したいです。具体的な変換ルールは、全角ひらがな→半角カタカナ、漢字はそのまま、全角カタカナ→半角カタカナ、半角カタカナはそのまま、半角アルファベットはそのまま、全角アルファベット→半角アルファベット、半角数字はそのまま、全角数字→半角数字、半角記号はそのまま、全角記号→半角記号です。
  • Javaには標準で上記の変換を行うメソッドは存在しません。自作する場合、いくつかのアプローチが考えられますが、最もパフォーマンスが速い方法は、正規表現を使用して一括変換することです。
  • 全角から半角への変換は文字ごとに変換処理を行うため、文字列の長さによってはパフォーマンスの低下が生じる可能性があります。そのため、大量の文字列を変換する場合は、StringBuilderを使用し、一度に変換する方法が効果的です。また、変換ルールに一部例外がある場合は、変換テーブルを使用することも考えられます。
回答を見る
  • ベストアンサー

全角から半角に変換する

Javaで、文字列の中に全角があれば単純に半角に変換するような処理をしたいです。具体的には、次のような文字列があった場合、以下のように変換したいです。 <変更前> あ亜アアaaAA11%% <変更後> ア亜アアaaAA11%% つまり、以下のようにしたいです ・全角ひらがな→半角カタカナ ・漢字:何もしない ・全角カタカナ→半角カタカナ ・半角カタカナ:何もしない ・半角アルファベット→何もしない ・全角アルファベット→半角アルファベット ・半角数字→何もしない ・全角数字→半角数字 ・半角記号→何もしない ・全角記号→半角記号 上記のように書くと複雑に見えますが、要は基本的に半角に相当する文字がある場合には半角にしたいだけです。Googleで探してみましたが、Javaで標準で上記のような処理を出来るようなメソッドを見つけることができませんでした。このようなメソッドは標準で存在しますでしょうか? 自作する場合、いくつかアプローチがあると考えられますが、最もパフォーマンスを速くしたい場合にはどのような作り方にした方がよいでしょうか。お手数ですが、宜しくお願いします。 <追伸> プレビューで見たら、半角の文字が全角に自動的に変換されてしまいました。。 例文からはわかりにくいかも知れませんが、宜しくお願いします。。

  • Java
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

作るなら。 class liAsc implements ActionListener { public void actionPerformed(ActionEvent agevt) { if(txArea.getSelectionStart() == txArea.getSelectionEnd()) txArea.selectAll(); String Str3 = txArea.getSelectedText(); StringBuffer Str4 = new StringBuffer(""); String StrD1 = "0123456789"; String StrS1 = "0123456789"; String StrD2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; String StrS2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; String StrD3 = "abcdefghijklmnopqrstuvwxyz"; String StrS3 = "abcdefghijklmnopqrstuvwxyz"; String StrD4 = "-+*/!#$%&’()="; String StrS4 = "-+*/!#$%&'()="; String StrD5 = "アイウエオカキクケコサシスセソタチツテトナニヌネノ"; String StrS5 = "アイウエオカキクケコサシスセソタチツテトナニヌネノ"; String StrD6 = "ハヒフヘホマミムメモヤユヨラリルレロワヲン"; String StrS6 = "ハヒフヘホマミムメモヤユヨラリルレロワヲン"; String StrD7 = "ァィゥェォャュョッ"; String StrS7 = "ァィゥェォャュョッ"; String StrD = StrD1 + StrD2 + StrD3 + StrD4 + StrD5 + StrD6 + StrD7; String StrS = StrS1 + StrS2 + StrS3 + StrS4 + StrS5 + StrS6 + StrS7; int j; for(int i = 0; i < Str3.length(); i++) { j = StrS.indexOf(Str3.substring(i, i + 1)); if (j >= 0) Str4.append(StrD.charAt(j)); else Str4.append(Str3.charAt(i)); } txArea.replaceRange(Str4.toString(), txArea.getSelectionStart(), txArea.getSelectionEnd()); } } ※StrS*は半角です。

rio_grande
質問者

お礼

参考になりました。有難うございました。

その他の回答 (1)

  • teketon
  • ベストアンサー率65% (141/215)
回答No.2

TerasolunaのStringUtil.zenkakuToHankaku() 一番しんどい濁音、半濁音を含めた全角から半角への変換をしてくれます。 あとは処理の前にひらがなからカタカナへの変換を入れるだけです。 ただ、対象とする全角記号はチェックしたほうが良いです。特殊記号もありますので。 性能は一文字ずつスキャンする必要があるので、ほぼ上がらないと思います。

参考URL:
http://sourceforge.jp/projects/terasoluna/
rio_grande
質問者

お礼

参考になりました。有難うございました。

関連するQ&A

  • 全角文字を半角に変換する

    全角文字を半角へ、またはその半角文字を全角にする 関数もしくは処理がありましたら教えていただきたいの ですが、宜しくお願い致します。 また変換する文字はアルファベットと数字で、漢字とかが 入力されたらエラー表示させる例を提示していただけると たいへんありがたいです。

  • 半角全角について

    数字、アルファベット、カタカナには半角全角がありますがなぜあるのですか?どちらかに統一できないのですか? アルファベットが言語の欧米でも半角全角ってあります?

  • 全角→半角変換 C UNIX

    言語:C++ OS:UNIX お世話になります。 ご存知でしたらお力をお貸しください。 今、 入力力された全角のアルファベット・数字・ひらがな・カタカナを 半角アルファベット・数字・ひらがな・カタカナに変換し さらに、規定の記号以外は削除するプログラムを作らなくてはいけない状況です。 Cも経験が浅い為、いろいろググってみたのですが 見つかってもLCMapStringくらいで、これではC++とUNIX環境では動かなくて 非常に困っています ご存知の方、どなたか教えていただけないでしょうか。

  • 全角 → 半角 への変換

    いつもお世話になります。 さて標記の件、データの変換で悩んでいます。 ACCESSのデータ(これも外部から取り込みます)中に全角文字が混じっていればその部分を半角に変えたいと思います。 全角文字が数字、ひらがな、カタカナのときは半角カナに出来ましたが、漢字の時に変換できません。 可能であれば間違えていても良いのでヨミガナに、不可なら半角スペース、これも不可なら削除したいです。 WinXP Office2000PROを使用しています。 以上、宜しくお願いいたします。

  • カタカナのみを半角から全角に変換したいのですが

    VBAについて教えてください。 文字をHPにアップできるように、カタカナのみを半角から全角に変換したいのですが 何か良い方法はありますか? 文字は英字・ひらがな・カタカナ・漢字がランダムに入っています。 例えば Sub test() Dim a As String a = "aaaアアア<>BBB" End Sub の状態で。「アアア」のみを全角にするにはどうすればいいでしょうか? アルファベットは半角のままにしたいです。

  • ワードで数字の全角を半角に(カタカナは全角のままで)変換するには?

    ワードに100ページの文章があります。全角数字が散在しています。全角数字を半角に直したく、半角操作をかけるとカタカナも半角に変換されてしまいます。数字だけ変換されるようにするには、どのようにしたらいいのでしょうか。ワードの、書式メニュー→文字種の変換→半角、で操作をおこないました。

  • 半角から全角に変換してくれない

    WEBページで情報を、特に住所を入力するときに全角のみ許可されていることがよくあります。 何故半角が受け付けられないのでしょうか? 半角全角変換なんて容易だと思えるのですが、文字列の転送時に起こるのでしょうか?そうだとしてもブラウザ側で処理すれば良いと思います。 単にユーザビリティはあまり重視されていないからですか?

    • ベストアンサー
    • HTML
  • テキストを全角→半角に変換するソフト

    はじめまして。 テキストを全角→半角変換できるフリーソフトを教えてください。 (当方WinXpです。エディタはTeraPadを使っています)  ・数字、英字、句読点、記号など、半角にしたい文字列を指定できる  ・簡単な操作のものがいいです(ドラッグ&ドロップなど) おすすめのものがあれば教えてください。 よろしくお願いします。

  • 半角カタカナを全角カタカナに変換したい

    Windows2000/Microsoft Excel2000です。 入力されている文字列のカタカナが半角になっているのを 全角に一括変換する数式はありますでしょうか? 英数字は半角のまま残したいのですが。 JISを使うと英数字も全角になってしまいます。 ヘルプいただけると大変助かります。

  • 全角から半角への変換

    Excel2000を使っていますが、ある列(または行)の全角で入力された数字を、すべて半角に変換する方法がありましたら教えてください。

専門家に質問してみよう