2014-01-10 211 views
0
String numbers = "5 1 5 1"; 

那麼,是不是:分裂空格分隔字符串

String [] splitNumbers = numbers.split(); 

或:

String [] splitNumbers = numbers.split("\s+"); 

尋找:["5","1","5","1"]

任何想法,爲什麼既不是.split線將工作?我試着閱讀有關正則表達式的答案,但我沒有得到任何地方。

回答

1

由於\表示轉義字符,因此您必須使用額外的\來逃避正則表達式:

public static void main(String[] args) { 
    String numbers = "5 1 5 1"; 
    String[] tokens = numbers.split("\\s+"); 
    for(String token:tokens){ 
     System.out.println(token); 
    } 
} 

所以額外的\逃脫下一個\,然後被視爲文字\

當使用\\s+時,字符串將被拆分成多個空白字符(空格,製表符等)。

7

在你上面的情況split("\s+");,你需要逃避\與另一個反斜槓,這就是:

split("\\s+");

或者

split(" ");也能做到這一點

注意split("\\s+");拆分任意長度包括newli在內的空白ne(\n),標籤(\t),而split(" ");將拆分只有一個空間。使用split("\\s+");你會得到{"5","1","5","1"}

同時使用split(" ");

例如,當你有一個字符串以兩個空格隔開,比如 「5   1 5 1」,

你會得到{"5","","1","5","1"}

+1

注意''\\ s +「'和''''' –