2010-06-06 40 views
0

我需要在每一行中分割這一行字符串,我需要得到第三個字(電影名稱),但正如你所看到的,分隔符是一個大的空白字符在某些情況下它的小就像在最後的數字或前面的數字之前那樣。其中分割時使用的分隔符字符串

我嘗試使用字符串拆分(「」)正則表達式,也\t但得到了界限的錯誤。

400115305 Lionel_Atwill The_Song_of_Songs_(1933_film) 7587 
400115309 Brian_Aherne A_Night_to_Remember_(1943_film) 7952 

有沒有人有同樣的問題?

回答

0

的解決方案是str.split("\\t");

3

您是否試圖拆分所有這樣的空格:line.split("\\s+")split方法支持正則表達式。

編輯:對不起,應該是\\s的確。

下面的代碼

String line = "400115305 Lionel_Atwill The_Song_of_Songs_(1933_film) 7587"; 
System.out.println(Arrays.toString(line.split("\\s+"))); 

回報與[400115305, Lionel_Atwill, The_Song_of_Songs_(1933_film), 7587]我機(Java SE 6)上。

+0

應該就是讀作line.spluit( 「\\ S」)'? – Armand 2010-06-06 12:57:04

+0

這一個將不起作用。一個好的應該是「\\ +」 – vodkhang 2010-06-06 12:57:06

+0

我再次測試,\\也將無法正常工作 – vodkhang 2010-06-06 12:59:50

0

此代碼應該工作。一個好的應該是s.split("\\ +");

public class Main { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     String s = "400115305 Lionel_Atwill The_Song_of_Songs_(1933_film) 7587"; 
     String [] s2 = s.split("\\ +"); 
     for (String string : s2) { 
      System.out.println("string = " + string); 
     } 
    } 
} 
0

此代碼:

String s = "400115305 Lionel_Atwill The_Song_of_Songs_(1933_film) 7587\r\n" 
     + "400115309 Brian_Aherne A_Night_to_Remember_(1943_film) 7952"; 

String[] lines = s.split("\\r\\n"); // split lines 
for (String line : lines) { 
    String[] items = line.split("[\\s\u00A0]+"); // split by whitespace OR   
    System.out.println("Film=" + items[2]); 
} 

具有以下的輸出:

Film=The_Song_of_Songs_(1933_film) 
Film=A_Night_to_Remember_(1943_film)