28

このコミュニティの助けを借りて、ユーザー入力から数値を削除することに成功しましたが、以下のコードは、削除された数値の前の英字のみを取得します。

import java.util.Scanner;

public class Assignment2_A {

    public static void main(String[] args) {
        Scanner firstname = new Scanner(System.in);
        String firstname1 = firstname.next();
        firstname1 = firstname1.replaceAll("[^A-Z]","");
        System.out.println(firstname1);
    }
}

たとえば、ユーザー入力 = S1234am の場合、返されるのは S だけです。文字列内の残りの文字を取得するにはどうすればよいですか?

4

7 に答える 7

58

これにより、すべての数字が削除されます。

firstname1 = firstname1.replaceAll("\\d","");
于 2013-07-07T20:28:47.693 に答える
23

以下を使用できます。

firstname1 = firstname1.replaceAll("[0-9]","");

これにより、すべての数値が String から削除されますfirstName1

    String firstname1 = "S1234am";
    firstname1 = firstname1.replaceAll("[0-9]","");
    System.out.println(firstname1);//Prints Sam
于 2013-07-07T20:32:04.377 に答える
18

現在、正規表現[^A-Z]は大文字のみを保持するように構成されています。[^A-Za-z]小文字も保持するために、 に置き換えてみることもできます。

于 2013-07-07T20:28:06.957 に答える
1

あなたの正規表現:

[^A-Z]

は、大文字以外のものに一致します。

つまり、すべての小文字も一致します。

おそらく使用する必要があります:

[^A-Za-z]

代わりに正規表現として。

また、これは ASCII 以外は考慮されないことに注意してください。それはあなたが望むものかもしれませんし、そうでないかもしれません。

于 2013-07-07T20:29:10.757 に答える