1

アルファベット以外の文字列からすべてを削除するための簡潔な正規表現は何でしょうか

        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    int T=0; 
    try{
        T= Integer.parseInt(br.readLine());

        while(T>0)
                String input=br.readLine();
                **String res= input.replaceAll("^[a-zA-Z]"," " );**
                System.out.println(res);

また試した

      input.replaceAll("[^a-zA-Z]]"," " )

どちらも入力文字列から何も置き換えていません。入力文字列はそのまま残ります。

編集:

         input.replaceAll("[^a-zA-Z]"," " )  //works well
         input.replaceAll("^[a-zA-Z]"," " )  //replaces first char of string
4

2 に答える 2

4

必要なもの:

input = input.replaceAll("[^a-zA-Z]"," " );
^^^^^^^                          ^ ^

文字列は不変であるため、変更された文字列を取得するにはinput、メソッドによって返されるStringオブジェクトへの参照ポイントを作成する必要があります。replaceAll

範囲A-zはあなたが望むものではありません。必要A-Zです。

]また、パターンに余分なものがあります。

見てください

于 2012-11-11T07:46:35.397 に答える
3

input.replaceAll("[^a-zA-z]","")は文字列定数プールの新しい文字列であり、この新しいコンテンツで文字列を設定しません。これを使用してください:

input = input.replaceAll("[^a-zA-z]","");
于 2012-11-11T07:43:48.587 に答える