Javaプログラムで[\D]+はどういう働きをしているのか?

このQ&Aのポイント
  • Javaプログラムで[\D]+はどのように機能するかについて教えてください。
  • [\D]+は非数字(数字以外の文字)にマッチする正規表現で、Javaのsplitメソッドによって文字列を非数字で区切ります。
  • 上記のプログラムでは、「明日は1990年です。」という文字列を[\D]+により非数字で区切り、結果として「1990」という数字が表示されます。
回答を見る
  • ベストアンサー

javaについて

以下のプログラムで[\\D]+はどういう働きをしているのか分からないので教えていただけますでしょうか。 実行結果は 1990 と表示されます。 よろしくお願いいたします。 public class split{ public static void main (String[]args){ String s = "明日は1990年です。"; String [] str = s.split("[\\D]+"); for( String st: str ){ if( !st.equals("") ){ System.out.println( st ); } } } }

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

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

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

\Dは数字以外を表します。 javaの正規表現については以下を参照してみてください。 http://java.sun.com/javase/ja/6/docs/ja/api/java/util/regex/Pattern.html ですので、このソースの場合は「数字以外の連続した文字列で分割」するので1990のみが残ります。

関連するQ&A

  • javaの質問です 合ってるかをお願いします

    間違ってる場合は何が正解かを教えてください。 よろしくお願いします 1 変数strには何が入っているか test 2 dataとstrの関係 わからないです。 public class Example5 { public static void main( String[] args ) { String data = "test."; hyouji( data ); } static void hyouji( String str ) { System.out.println( str ); } }

    • ベストアンサー
    • Java
  • Javaの参照渡し

    以下のようなプログラムで望むような結果(下に書いてある実行結果)は得られるでしょうか。 class HelloWorld {   public static void main(String[] args)   {     String str;     makeString1(str);     System.out.println(str);     makeString2(str);     System.out.println(str);   }   public static void makeString1(String str)   {     String words = "HelloWorld!";     str = words;   }   public static void makeString2(String str)   {     str = "HelloWorld!!";   } } ---実行結果--- HelloWorld! HelloWorld!!

    • ベストアンサー
    • Java
  • Javaについて教えてください!

    sampleパッケージに属するMain.javaとSub.javaがあり、Main.javaのmainはSub.javaのsubメソッドを呼び出して「OK」と表示させるプログラムを教えてください! //Main.java package sample; public class Main{ public static void main(String[] args){ Sub.sub(); }} //Sub.java package sample; public class Sub{ static String str = "OK"; public static void sub(){ System.out.println(str); }} String型の変数strはクラス変数で行いたいのですが、どこを改善すれば良いでしょうか?

    • ベストアンサー
    • Java
  • JAVAについて

    現在JAVAについて学んでいるのですが、下記のソースが実行出来ません。どなたかわかる方、回答宜しくお願いいたします。 public class Lound { void main(String[] args) { String rtn = methWithParamReturn(3); if(rtn.equals("0")) System.out.println("0あかんよ"); else System.out.println(rtn); } public String methWithParamReturn(int x) { System.out.println(x); x= x*x; String str = String.valueOf(x); return str; } }

  • javaプログラムについて

    mainメソッド内の指定された部分の処理を、 別のメソッドに分けてください。 mainメソッド内から作成した別メソッドを呼び出して 実行できるようにしてください。 ※分ける前と分けた後で処理結果が変わらないこと (入力された文字が"A"の場合true, それ以外の場合falseを返すように) */ class MethodAdd1{ public static void main(String[] args){ /* // ★ここから if("A".equals(args[0])){ judge = true; }else{ judge = false; } // ★ここまで */ boolean judge; if("A".equals(args[0])){ System.out.println("true"); }else{ System.out.println("false"); } } /* **戻り値:boolean **引数:String */ //ここにメソッドを作成 public static boolean equals(String a){ String str="A"; if("A".equals(str)){ return true; }else{ return false; } } } これで一応trueかfalseと表示されるのですが、合っているのか分かりません。 お時間のある方で、手直しをして頂ける方お願い致します。

  • Javaについて教えてください!

    OyaクラスのメインメソッドからKoクラス内のメソッドを呼び出して文字列の出力を行いたいのですが、今のままではエラーが出てコンパイル出来ません。どこが間違っているか教えてください!ちなみにエクリプスでの実行には問題はありません。 public class Ko{ public static void ko(){ String str = "KO"; System.out.println(str); }} public class Oya{ public static void main(String[] args){ Ko.ko(); }}

    • ベストアンサー
    • Java
  • JAVAコンストラクタについて

    JAVA のコンストラクタ定義の際に、下記のようにコンストラクタにvoidを付けた時と付けない時の処理結果が変わるのはなぜでしょうか。 (1) class O { protected int d; O(){ System.out.println("O = " + d); } } class Study_6_3main_void { public static void main(String args[]) { int i = 1; O OO = new O(); System.out.println("O = "); } } (2) class O { protected int d; void O(){ System.out.println("O = " + d); } } class Study_6_3main_void { public static void main(String args[]) { int i = 1; O OO = new O(); System.out.println("O = "); } } 実行結果 (1) O = 0 O = (2) O = 以上です。回答の程よろしくおねがいします。

    • ベストアンサー
    • Java
  • 今勉強中のjavaで。わからないことがあります。

    import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); int num =Integer.parseInt(str1); System.out.println("あなたは" + num +"歳です。"); } } ------------------------------- import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("あなたは" + str1 +"歳です。"); } } なぜ下では悪いのですか?なぜnum をつかないといけないかがわかりません。正確には str1とnumの違いがわからなくて困っています。何が混乱の原因ですか?

    • ベストアンサー
    • Java
  • javaの表示方法がわかりません。

    javaを勉強しているのですがもう少しと言うところで悩んでいます。 配列の中身を見て同じコードがある場合にはその個数をカウントし表示するというようなことをしたいのですが表示部分でうまくいきません。 初歩的な質問ですみませんが、どうやって重複しないで表示させることができるのでしょうか。 **表示させたい結果** 001は2個 003は2個 004は1個 005は4個 ********* **表示される結果** 001は2個 001は2個 003は2個 003は2個 004は1個 005は4個 005は4個 005は4個 005は4個 ********* **ソース** class str{ public static void main(String args[]){ int i = 0; int j = 0; int S = 0; String test[] ={"001","001","003","003","004","005","005","005","005"}; String str1 = ""; String str2 = ""; for(i=0;i<9;i++){ str1 = test[i]; for(j=0;j<9;j++){ str2 = test[j]; if(str1.equals(str2)){ S++; } } System.out.println(str1 + "は" + S + "個"); S = 0; } } } *********

  • 以下のコードのどこが問題なのでしょうか?

    java初心者です。よろしくお願いいたします。以下のコードはどこに問題があるのでしょうか?よろしくお願いいたします。 public class Sample2 { public static void main(String[] args1,String[] args2) { MyObject object = new MyObject(); object.setName("mikel" , "jun"); String s = object.getName(); System.out.println(s); } } class MyObject { String name; public void setName(String str1,String str2) { name = "str1"+"str2"; } public String getName() { return name; } }

    • ベストアンサー
    • Java

専門家に質問してみよう