分割String时使用哪个分隔符

时间:2010-06-06 12:47:20

标签: java regex delimited-text

我需要在每一行中分割这个行字符串,我需要得到第三个单词(电影名称),但正如你所看到的那样,在某些情况下,分隔符是一个很大的空白字符最后的数字或前面的数字前面的数字。

我尝试使用带有(“”)正则表达式的字符串拆分,以及\t但是得到了超出边界的错误。

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

有没有人有同样的问题?

5 个答案:

答案 0 :(得分: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 6 SE)。

答案 1 :(得分: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);
        }
    }
}

答案 2 :(得分: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)

答案 3 :(得分:0)

为什么不根据需要使用正则表达式。它非常灵活,可以轻松解决您的问题。 以下链接可能会对您有所帮助:http://www.regular-expressions.info/java.html

答案 4 :(得分:0)

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