• 締切済み

半角全角混在データの中の半角文字だけをJAVAで抽出する方法

UNICODEでは半角文字も全角文字も2バイト以上で表現 されるらしいので、どうやってすべての半角文字だけを 取り出したらいいか思いつきません。教えてください。

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

みんなの回答

回答No.2

調べみましたが、こんな感じらしいです。 動作確認してませんけど。 int len = a.length(); for(int i=0; i<len; i++){ char c = a.charAt(i); System.out.print("[" + c + "] "); if((c<0x007f && c>=0x0020) || (c>0xff60 && c<=0xff9f)){ ・・・・・ } } 参考に http://yamaguch.sytes.net/~tora/java/diary/jpcode.html

参考URL:
http://www.vc-net.ne.jp/~ytp/bbs/java/bbs14291.html
  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

Character.UnicodeBlock.html#of(char) を使います。

参考URL:
http://java.sun.com/j2se/1.3/docs/api/java/lang/Character.UnicodeBlock.html#of(char)

関連するQ&A

  • 半角/全角文字混在データの分割方法

    VB6.0にて、あるデータ項目の内容を、画面上の2つの表示領域に分割して セットする方法を教えて下さい。 あるファイルの項目として、「住所」という項目があるとします。 このデータを取得し、画面に表示する際に、「住所1」「住所2」とに分割して、 セットします。 この場合、ファイル上の「住所」は、キャラクタタイプで40バイトと定義されており、 ”半角/全角文字混在”でデータが格納されています。 画面上の、「住所1」「住所2」はそれぞれ、20バイトとします。 この様な条件で、単純に取得したデータを2分割すると、 取得したデータが、全て半角か全角なら問題はないのですが、 例えば、1文字目が半角で、以降が全て全角文字だった場合に、 最後の全角文字がぴったり収まらなくなり、うまく表示できないように思います。 また、文字を取得する際に、使用している、Mid(MidB)関数やLen(LenB)関数も、 うまく利用できていないようです。(コード体系の違いでしょうか?) どなたかご教授下さい。 よろしくお願いします。

  • 全角半角あわせて3文字

    全角半角が混在している文字列の左から3文字を取得したい場合にいい方法はないでしょうか? mb_substr関数で第3パラメータはバイト数で指定するようです。 関数リファレンスでは「最大文字数」って表現になってます。 http://php.net/manual/ja/function.mb-substr.php 半角なら文字数=バイト数ですが、全角だと指定の半分の文字数になります。 最大だから間違ってはないですが、文字数じゃないよな‥‥っていつも思ってます。 いったん半角→全角にして、6バイト分を切り出すのはできます。 でも、英数字も全角半角混在してるので元の文字列を壊したくないのです。 mb_substrの第3パラメータを6から3まで、mb_strlenが3になるまで回すのもやってみました。 でも、なんかスマートじゃないんですよ‥‥。 なにかこう、スマートないい手はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • substr で全角半角混在の文字列を抜くには…

    全角と半角の混ざった文字列で下のようにすると、1byte文字が混ざったときの最後の1文字が文字化けします。 $kensaku = substr($namae, 0, 10); 原因は分かったので色々なサイトを調べたのですが、頭がついてきません… 全角だけのときは10byte 半角が奇数混じったときは11byte 半角が偶数混じったときは10byte を$kensaku に渡すには どの様な記述をすればいいのでしょうか? 既出の質問で申し訳ございませんが、どうぞ宜しくお願い致します。

    • ベストアンサー
    • Perl
  • エクセルの半角、全角

    エクセルで、半角文字、全角文字が混在するセルを関数等で全て全角にする(半角文字を全角文字に)方法はあるでしょうか?また、文字が1バイト文字か2バイト文字かを簡単に見分ける方法はありますか?

  • 全角半角?

    ACCESS97を使用しています。 次のような文字があります。 4-22 これを4バイトのデータに追加したところ "‐"と"-"によって "4‐2"となります。 "‐"…全角 "-"…半角という意味でしょうか? またStrConv関数で全角⇔半角、大文字⇔小文字をしたのですが 変換できません。 目的は 4‐22 のデータを 4-22 というように変換して 4バイトのところに全て追加できるようにしたいのです。  (数字ではなく "-"横棒を変換) ACCESSで可能でしょうか?

  • 半角文字を全角文字に直す方法

    半角文字で作成された文書があります。「12345アイウaiu」のような。 それをいっぺんに全て「12345アイウaiu」と全角文字に直したいのですが出来ますか?

  • 全角、半角文字の判別について

    フォームのテキストで全角なら10文字まで、半角なら20文字まで入力できるようにしたいのですが、EUCの場合、半角カナは2バイトになるため、バイト数で制限をかけるとうまくいきません。かといって文字数で制限をかけてもうまくいきません。 何かいい方法はあるでしょうか?

    • ベストアンサー
    • PHP
  • CString型 全角半角を意識せずに「1文字」ずつ取り出す

    CString型の文字列に格納されている文字を1文字ずつ取り出したいです。 ただし半角なら1バイト単位で、全角なら2バイト単位で、という風に分離したいです。 半角だけなら、str[0] str[1]...という風に取り出せますが、 全角が混じっていると、1バイト目、2バイト目と分離されてしまいます。 その文字が半角か全角かを判断して、半角なら1バイト、全角なら2バイト同時に取り出すロジックを、下記のような感じの関数として作りたいです。 CString ripString(CString str,int index){ //ソースとなる文字列、n文字目 /*~処理~*/ return 文字列; } たとえば"あaいbうcえdおe"という文字列を入れると、 CString str="あaいbうcえdおe"; ripString(str,0) →結果 "あ" ripString(str,1) →結果 "a" ripString(str,2) →結果 "い" ripString(str,3) →結果 "b"  ・  ・  ・   こういうことをするのに良い方法はありますか? 1バイトごとのそれぞれの文字自身が、 ・半角文字なのか ・全角文字の前1バイトなのか ・全角文字の後1バイトなのか これをプログラム的に判別する方法があればいいのですが・・・悩んでいます。

  • 全角から半角へ切り替えたとき、文字が残るのは・・?

    前にWindows98を使っていたときは、全角で打っていたのを途中で半角に(全角で打った文字は、まだ未確定のまま)かえると、その未確定の全角が消去されて、新たに半角が打てていたのですが、今は、全角からいきなり半角に変えると全角が勝手に確定されています。 これは、何か設定があるのでしょうか?? よろしくお願いいたします。

  • 半角、全角の判別方法

    100バイトの領域の半角、全角を含む文字列のから 40バイトを取得したいのですが、最後は文字化けにならないように したいのですが、どうやればいいでしょうか? strncpy(testBefore,testAfter,40); とかやってみましたが案の定文字化けになってしまいました。 半角の文字コードを全て定義しておき、最後がそれになっていないか比較するという方法以外に何か手はありますでしょうか? 文字コードはEUCです。 宜しくお願いします。

専門家に質問してみよう