2012-01-25 34 views
2

出於某種原因,我可以使拆分方法工作。老實說,我不知道我做錯了這個驗證碼:錯誤字符串拆分

String address = "0.0.0.0"; 
String [] adr = address.split("."); 
System.out.println(address); 
System.out.println(adr[0]); 

我對數組訪問得到一個索引出界失誤。任何關於我哪裏出錯的想法?

回答

14

split()方法預計regular-expression,而不是一個文字字符串,並且「。」字符在正則表達式中有特殊的含義。分割字面上的「。」字符,您需要將其轉義,以便正則表達式解析器明白這就是您想要的。

試試這樣說:

String [] adr = address.split("\\."); 

注意,有必要基本上轉義兩次,因爲你想要的正則表達式解析器得到字符串,這實際上是「\」,「\\」。當以字符串文字表示時。 「\\」解析爲文字「\」字符,因此正則表達式解析器被賦予「\。」,然後解析爲文字「。」。字符。

另外請注意,stackoverflow解析器似乎要忽略以「\」開頭的某些序列,這使得該帖子易於編輯。

+0

thnks很多:),我會有同樣的問題 – HCarrasko

3

「。」是正則表達式中的一個特殊字符,split的參數是一個正則表達式。用它逃脫。 (即「\\。」)。

+0

應該是「\\」。自「。」在java中不是一個易犯的字符 – yurib

+0

這就是我以爲我寫的:-) – bmargulies

4
String address = "0.0.0.0"; 
String [] adr = address.split("\\."); 
System.out.println(address); 
System.out.println(adr[0]);