5

私はJavaプログラミングに不慣れで、助けが必要です。文字列のテーブルを作成し、ユーザーがサイズを指定します。続いて、ユーザーは文字列を指定します。文字を印刷したいのですが、アルファベットの文字ではない文字は使用しません(例:java!4-> java、ja /?、。va-> java)

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;
    }


}

私はこのコードをインターネットで探しています:

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

3 に答える 3

5

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

于 2012-11-02T19:08:48.150 に答える
3

あなたはプログラミングに不慣れで、正規表現の世界に(まだ)関わりたくないので、String文字だけでaを返すメソッドを作成できます。

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();
}
于 2012-11-02T19:13:12.410 に答える
1

が正規表現stringのみであるかどうかを確認できます。alphabets以下はサンプルコードです

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

または、 StringAPIString.matches(regex)から使用できます。JavaでのREGEXの詳細については、こちらをご覧ください。

于 2012-11-02T19:05:18.387 に答える