0

ちょっとした質問ですが、私は文字のみを許可する正規表現を書いています (単語のみ)。

([a-zA-Z])+

これを次のように変更する必要がありました (Java から貼り付け):

([a-zA-Z]&&[^\\s])+

コンテキストを提供するために-これを試してスペースを含む単語を入力しましたが、それでもtrueが出力されます:

public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        System.out.print("Enter: ");
        String s = in.next();

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

    }
4

3 に答える 3

2

これは常にTRUEを次のように出力します

String s = in.next();

ユーザーが入力した最初のトークンを使用します (スキャナーによってスペースで区切られます)。

使用する方が良い:

String s = in.nextLine();
于 2012-08-21T00:44:59.520 に答える
1

スキャナーは入力をスペースで分割する可能性が高いため、部分的な文字列と一致しています。これは、 の値を出力することで確認できますs。他の人が述べたように、おそらくScanner.nextLine()メソッドが必要です。

于 2012-08-21T00:45:13.717 に答える
1

このScanner .next()メソッドは次のトークンを取得します。これはデフォルトでスペースで分割されます。.nextLine()代わりに使用してください。

于 2012-08-21T00:46:23.143 に答える