Java 拆分字符串时使用哪种delimeter

Java 拆分字符串时使用哪种delimeter,java,regex,delimited-text,Java,Regex,Delimited Text,我需要在每一行中拆分这一行字符串,我需要得到第三个单词(电影名称),但正如你所看到的,delimeter是一个大的空白字符,在某些情况下,它的大小类似于结尾的数字之前,或者它的大小类似于前面的数字 我尝试使用带有(“”)regex的字符串拆分,也尝试了\t,但得到了越界错误 400115305 Lionel_Atwill The_Song_of_Songs_(1933_film) 7587 400115309 Brian_Aherne A_Night_to_Remember

我需要在每一行中拆分这一行字符串,我需要得到第三个单词(电影名称),但正如你所看到的,delimeter是一个大的空白字符,在某些情况下,它的大小类似于结尾的数字之前,或者它的大小类似于前面的数字

我尝试使用带有(“”)regex的字符串拆分,也尝试了
\t
,但得到了越界错误

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

有人有同样的问题吗?

您是否尝试过像这样拆分所有空格:
行。拆分(\\s+)
split
方法支持正则表达式

编辑:对不起,应该是
\\s

下面的代码

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

在我的机器(Java 6 SE)上返回
[400115305,Lionel_Atwill,The_Song_of_Songs_(1933_film),7587]

您是否尝试过像这样拆分所有空格:
行。拆分(\\s+)
split
方法支持正则表达式

编辑:对不起,应该是
\\s

下面的代码

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

在我的机器(Java 6 SE)上返回
[400115305,Lionel_Atwill,The_Song_of_Songs_(1933_film),7587]

此代码应该可以工作。一个好的应该是
s.split(\\+)


这个代码应该可以工作。一个好的应该是
s.split(\\+)

此代码:

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)
此代码:

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)

为什么不根据需要使用正则表达式。它非常灵活,可以轻松解决您的问题。
这里有一个链接可能对您有所帮助:

为什么不使用正则表达式来满足您的需要。它非常灵活,可以轻松解决您的问题。
这里有一个链接可以帮助您:

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

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