2012-11-02 16 views
5

私はJavaプログラミングには新しく、助けが必要です。 文字列のテーブルを作成し、ユーザーがサイズを指定します。その後、ユーザーはStringを与えます。私が探しています文字列にはアルファベットのみが含まれています

public static void main (String[] args) { 

String[] x = new String[size]; 
int size; 
String str= ""; 

BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); 

System.out.print("Give me size: "); 
size = Integer.parseInt(input.readLine()); 


    for(int i=0; i<size; i++){ 
    System.out.print("Give me a String: "); 
    str = input.readLine(); 
    x[i]=str; 
    } 


} 

私は文字を印刷したいが、アルファベットの文字でない文字のない(> javaの例えばJavaの4 - 。!?。 - > Javaの、JA /、VA) stringだけalaphabets正規表現とを持っているかどうかをチェックすることができます

if (str.matches("[a-zA-Z]")){ 
System.out.println(str); 
} 
+0

をここでは、質問の投稿から[回答を受け入れる](http://meta.stackexchange.com/a/5235/182862)を知っておくことをお勧めします。 –

答えて

3

あなたがプログラミングに新しいしていると(まだ)正規表現の世界に関与したくないので、あなただけの文字でStringを返すメソッドを作成することができます:あなたは新しいしているので

public String getStringOfLettersOnly(String s) { 
    //using a StringBuilder instead of concatenate Strings 
    StringBuilder sb = new StringBuilder(); 
    for(int i = 0; i < s.length(); i++) { 
     if (Character.isLetter(s.charAt(i))) { 
      //adding data into the StringBuilder 
      sb.append(s.charAt(i)); 
     } 
    } 
    //return the String contained in the StringBuilder 
    return sb.toString(); 
} 
+0

ありがとうございます!!それは仕事です:) – Mary

0

:このコードのためのインターネット。 は、以下のサンプルコード

String word = "java"; 
Pattern pattern = Pattern.compiles("[a-zA-Z]+"); 
Matcher matcher = pattern.matcher(word); 
System.out.println(pattern.find()); 

されていますし、String.matches(regex) String APIから約REGEX in Java

4

あなたは非常に単純な正規表現でこれを行うことができます読んで使用することができます。s/[^A-z]//g。これは、文字列内のすべての文字(大文字と小文字)をカプセル化する範囲A-zにないすべての文字を置換しません。単にnew_string = old_string.replaceAll("[^A-z]", "");を実行してください。

+1

提案された編集に応えて、 '' new_string''と '' old_string''を削除し、1つの変数を使用する:2つの変数を含めると、意図がより明確になり、再割り当てするのではなく、プロダクションコードでも同じ変数に何度も繰り返します。 – syrion

関連する問題