2013-09-22 25 views
-2

如果字符串中包含這些字符,則該語句將返回true。 「-1234567890」。如果字符串除了這些字符還有其他字符,該語句將返回false。字符可以以任何順序和任何數量,只要它包含這些字符。所以String a =「12-3」;將返回true,但String b =「1a3-」;會返回false。 **它也不能通過for循環。我需要查看字符串中的字符並接受該字符串(如果它只包含Java中的某些字符)

+2

瞭解正則表達式,它們將賦予你更多的比你想象的。 –

回答

2

如果你輸入一個名爲input你可以做到這一點

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

這回答你的問題相關的字符串 - 但我第二註釋說明,詳細瞭解正則表達式,你會發現它很有用比你更會認爲。

+0

這沒有奏效,它說「 - 」是非法逃跑角色。 – user2608978

+0

Ahh yes - 它需要\\ - –

+0

您不需要帶'matches()'的'^'和'$'錨點。另外,當字符類結束時,你不需要轉義'-'。所以,'matches(「[0-9 - ] *」)'應該也是一樣。或者,如果你想使用'\ d':'[\\ d - ] *'。 – arshajii

0

我想說

String str; 

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

首先,這樣你就不必把這個字符匹配已經^ $字符。 \\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 
相關問題