我需要在每一行中分割这个行字符串,我需要得到第三个单词(电影名称),但正如你所看到的那样,在某些情况下,分隔符是一个很大的空白字符最后的数字或前面的数字前面的数字。
我尝试使用带有(“”)正则表达式的字符串拆分,以及\t
但是得到了超出边界的错误。
400115305 Lionel_Atwill The_Song_of_Songs_(1933_film) 7587
400115309 Brian_Aherne A_Night_to_Remember_(1943_film) 7952
有没有人有同样的问题?
答案 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");