-3

文字列にこれらの文字が含まれている場合、ステートメントは true を返します。「-1234567890」。文字列にこれらの文字以外が含まれている場合、ステートメントは false を返します。文字は、それらの文字が含まれている限り、任意の順序および任意の数にすることができます。したがって、文字列 a = "12-3"; true を返しますが、String b = "1a3-"; false を返します。** また、for ループを通過することはできません。

4

3 に答える 3

2

入力がと呼ばれる文字列の場合、inputこれを行うことができます

input.matches("^[0-9\\-]*$")

これはあなたの正確な質問に答えます-しかし、私は正規表現についてもっと学ぶことを述べているコメントを支持します。

于 2013-09-22T04:07:04.153 に答える
0

私は言うだろう

String str;

str.matches("^[0-9-]*$")
于 2013-09-22T04:32:23.073 に答える
0

まず、matches には既に ^ $ 文字が含まれているため、この文字を入れる必要はありません。は特殊文字ではないことを\\d意味する ため、* の代わりに + を入れる必要はありません。これは、空の文字列を正規表現に一致させたくないためです。[0-9]-\\

したがって、次を使用する必要があります。

s.matches("[\\d-]+");

コード:

String arr[] = {"1-23a456-", "a123","123-","-","1","123123fwdf234","123-3453",""};
for (String string : arr) {
    System.out.println(string + "==>" + string.matches("[\\d-]+"));
}

出力:

1-23a456-==>false
a123==>false
123-==>true
-==>true
1==>true
123123fwdf234==>false
123-3453==>true
==>false  \\ empty string
于 2013-09-22T15:07:01.370 に答える