• ベストアンサー

半角英数字を判断したい

JAVA初心者です。 strIdに文字列が入っています。 このstrIdの文字列が半角英数字のみか判断したいのです。 ホームページを参考にし以下のように記述し、chkがtrueかfalseで判断しようかと思ったのですがだめでした。 boolean chk = true; for (int i=0; i<strId.length(); i++) { if (!(strId.charAt(i) > 0x0020 && strId.charAt(i) < 0x007F)) { chk = false; break; } } どのように記述すればよろしいのでしょうか?

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

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

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.1

正常に動作します。 Public class hankaku { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ String strId="abcdefghijKlmn"; boolean chk = true; for (int i=0; i<strId.length(); i++) { if (!(strId.charAt(i) > 0x0020 && strId.charAt(i) < 0x007F)) { chk = false; break; } } System.out.println(chk); } }

rabu_chihaha
質問者

お礼

ありがとうございます。 正常に動作しますか。 もう一度がんばってみます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

class Sample{ public static boolean isAlnum(String s){ boolean chk = true; for(int i=0; i<s.length(); i++) { char c = s.charAt(i); if(!Character.isLetterOrDigit(c)){ chk = false; break; } } return chk; } public static void main(String args[]){ String s1 = "aiueo123"; String s2 = "aiueo@sample.ne.jp"; String s3 = "aiueo_123"; String s4 = "aiueo 123"; System.out.println("\""+s1 + "\" is " +isAlnum(s1)); System.out.println("\""+s2 + "\" is " +isAlnum(s2)); System.out.println("\""+s3 + "\" is " +isAlnum(s3)); System.out.println("\""+s4 + "\" is " +isAlnum(s4)); } } みたいな感じですか? if(!Character.isLetterOrDigit(c)){ は、 if(!(Character.isUpperCase(c) || Character.isLowerCase(c) ||Character.isDigit(c))){ の方が良いのかも知れません

rabu_chihaha
質問者

お礼

ありがとうございます。 試してみます。

  • isi0611
  • ベストアンサー率34% (46/134)
回答No.2

こんばんは~(^^♪ rabu_chihahaさんの記述してあるソースを 動作させてみたところ問題ないと思いますが どうでしょうか??

rabu_chihaha
質問者

お礼

ありがとうございます。 もう一度確認してみます。

関連するQ&A

  • for文

    質問お願い致します。 これのソースのfor文を一つの文にするにはどのように書いたらよいでしょうか? お願い致します。 //指定された文字列が"a"と"b"の両方を含む場合はtrue、なければfalseを返す public class Mondai { public static void main(String[] args) { System.out.println("解答 :" + charBothContain("Habllow")); } public static boolean charBothContain(String str) { boolean answer1 = false; boolean answer2 = false; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == 'a') { answer1 = true; break; } } for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == 'b') { answer2 = true; break; } } return answer1 && answer2; } }

    • ベストアンサー
    • Java
  • 穴埋めができずに困ってます…(初心者です)

    参考書に出ていた問題について質問です。 穴埋め形式になっていて、途中までは埋まったのですが、最後の部分がわかりません。 StringBuffer bf = new StringBuffer(); boolean let; for (int i = 0 ; i < (bf.length()); i ++){ let = true; for (int j = 0; j <(nch.length()); j ++){ if (inputstr.charAt(i) == nch[j]) let = false;} if (let) ×××} return ×××;}//bfをstring型に変えて戻り値} の×××の部分です。 引数として与えた文字列から数字以外の文字を抜き出すプログラムなのですが、どこで何を行っているのかがよくわからなくなってきています。 回答お願いします。

    • ベストアンサー
    • Java
  • 半角英数字の判別

    お世話になります テキストフィールドにおいて半角英数字のチェックをしたいのですが・・・ 例えば『012ab』のような場合、 <script Language="JavaScript"> <!-- function checkText() { txt = document.myFORM.moto.value; if (txt.match(/[^a-z|^A-Z]/g)) alert("アルファベット以外が含まれてます"); } //--> </script> <form name="myFORM"> <input type="text" name="moto"> <input type="button" value="調べる" onClick="checkText()"> </form> では数字が入力されてるとalertされます function checkNum() { txt = document.myFORM.moto.value; for (i=0; i<txt.length; i++) { c = txt.charAt(i); if ("0123456789".indexOf(c,0) < 0) { alert("数値以外が含まれてます"); return; } } } //--> </script> <form name="myFORM"> <input type="text" name="moto"> <input type="button" value="調べる" onClick="checkNum()"> </form> ではアルファベットがあるとalertされてしまいます この2つをどのように組み合わせれば半角英数字以外であればalertされるようになるのでしょうか?

  • うしろ側の英数字のみ赤くするにはどうしたら?

    ワードの文字列として、例えば、第1のあんアん亜龠123aがあります。 この文字列の英数字に色をつけようとすると、 For Each c In Target wkText = StrConv(c.Value, vbWide) c.Value = wkText For i = 1 To Len(wkText) X = Mid(wkText, i, 1) If X Like "[0-9a-z]" Then With c.Characters(Start:=i, Length:=1).Font .Name = "MS ゴシック" .FontStyle = "太字" .ColorIndex = 3 End With End If Next Next のコードを使います。 すると、第1の文字の「1」にも適用されて太字で赤くなります。 そうではなくて、第1の文字の「1」には適用されないで、 第1のあんアん亜龠123aのうち、「123a」についてのみ適用されて太字で赤くなるようにしたいのですが、どうしたら良いでしょうか。 お教えねがいます。

  • ループの終わらせ方

    あるboolean配列でtrueなら■falseなら□を表示させ、時間とともにある規則で動かしていくプログラムを組みました。配列の宣言などを省略してますがこんな感じです。 do{ boolean[] box2 = (boolean[]) box.clone(); for ( i = 0; i < box2.length; i++) { if (box2[i]) { // コピーの玉があったら // 右方向に向かって空き箱を探す。 for (int j = 1; j < box.length; j++) { int p = (i + j) % box.length; if (! box[p]) { // 空き箱を見つけたので玉を入れる(trueにする)  box[p] = true; // 元の場所は玉を消す(falseにする) box[i] = false; // box2[i]はもう二度と調べないのでそのまま放置 break;   } }   } } box2 = null; for(h=0; h < box.length; h++){   if(box[h] == false) System.out.print("□"); if(box[h] == true) System.out.print("■"); } r++; }while(box == box && r<20); ちなみに表示結果は □■■□□■□□■□□■ ■□□■■□■□□■□□ □■□□□■□■■□■□ ・ ・ こんな感じになります。ここで質問なんですが、 過去と同じ配置の配列が出てきた時点でwhile文の ループを終わらせるにはどうすればよいでしょうか? 現時点ではループが20回になった時点で止めるようにしてます。

  • 英数字と記号の正規表現

    英数字と記号の文字であればtrueを返すような判定を正規表現で行いたいです。 英数字の判定([0-9a-zA-Z])、記号([\\p{Punct}]+)の判定は個別にテストして動作したのですが、二つを組み合わせて書くようにするにはどのようにすればよいのでしょうか? 当然ですが、以下のように書くと文字列の全てがそれぞれ記号なのか、英数字なのかを判定してしまうためfalseを返してしまいます。 String str = "~!@#$%^&*()_+{}|:"<>?`-=[]\;',./1234567890abcdefgxyz"; System.out.println(str.matches("[\\p{Punct}]+") || str.matches("[0-9a-zA-Z]+")); 以上、宜しくお願いします。

    • ベストアンサー
    • Java
  • JAVA 入力チェックについて。

    いつもお世話になっております。 いま、コマンドラインで入力された値の入力チェックを作成しているのですが、空白値のチェックがうまくいきません。スペースのチェックはできました。 また、参考URL等ございましたら、教えていただけないでしょうか。 // 未入力チェック private boolean check1(String input){ for (int i = 0; i < input.length(); i++) { char a = input.charAt(i); if (a == ' ') { return false; } } return true; }

    • ベストアンサー
    • Java
  • カタカナ判別

    下記は他のサイトで見たカタカナ判別の関数です。 javascriptはさっぱりまだわからないので、これをvbscriptの関数に変えたいのですが・・。 function checkKatakana(mojiretsu){ for(i=0; i<mojiretsu.length; i++){ if(mojiretsu.charAt(i) < 'ア' || mojiretsu.charAt(i) > 'ン'){ return false; } } return true; }

  • 全角英数字を自動的に半角変換するソース

    全角英数字を自動的に半角変換するソース パソコン初心者です。 以下は、 フォームに入力された全角英数字を自動的に半角に変換するソース(Javascript)のようなんですが どういった意味なのかよくわかりません。 一体どういう仕組みなんですか?? function zentohan(obj){ if(typeof(obj.value)!="string")return false; var han= '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@-.,:'; var zen= '1234567890abcdefghijklmnopqrstuvwxyz            ABCDEFGHIJKLMNOPQRSTUVWXYZ@-.,:'; var word = obj.value; for(i=0;i<zen.length;i++){ var regex = new RegExp(zen[i],"gm"); word = word.replace(regex,han[i]); } obj.value = word; }

  • 半角空白チェックについて

    いつもお世話になっております。 javascriptで半角空白チェックを行っております。 その場合に、半角空白のJISコードは キーボードから入力した場合は「0x20」 (Unicodeでも「0x20」) 代替文字列(&nbsp;)の場合は「0xa0」 (Unicodeでは「0xf8f0」??) となります。 両方とも半角空白と扱いたいため以下のようなロジックを用いています。 【javascript部】 function chk_han_kuhaku(i_char) {   for( i=0; i<i_char.length; i++ ){     var c = i_char.charCodeAt(i);     // Unicodeで比較     if ((c == 0x20) || (c == 0xf8f0)) {       alert(i + "文字目は半角空白です。");     } else {       alert(i + "文字目は半角空白ではありません。");     }   } } 【html部】 <input type="button" value="test" onclick="javascript:chk_han_kuhaku('&nbsp;abc de f')"> この場合、「0x20」はif文でhitしますが 「0xf8f0」にはif文でhitしません。 どういった対処が必要でしょうか? どなたかご教授下さい。 環境は OS:WindowsXP SP2 ブラウザ:IE6 です。 宜しくお願いいたします。

専門家に質問してみよう