какой разделитель использовать при разделении строки - PullRequest
0 голосов
/ 06 июня 2010

Мне нужно разделить эту строку строки в каждой строке, мне нужно получить третье слово (название фильма), но, как вы видите, разделитель - это один большой пустой символ, в некоторых случаях его маленький, как до числа в конце или большие, как перед числами в начале.

Я пытался использовать разбиение строки с ("") регулярным выражением, а также \t, но получил ошибку выхода за границы.

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

У кого-нибудь была такая же проблема?

Ответы [ 5 ]

3 голосов
/ 06 июня 2010

Вы пытались разделить все пробелы, как это: line.split("\\s+"). Метод split поддерживает регулярные выражения.

edit: извините, должно быть \\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).

0 голосов
/ 07 июня 2010

Решение было str.split("\\t");

0 голосов
/ 06 июня 2010

Почему вы не используете регулярные выражения для своих нужд. Это очень гибко и может легко решить вашу проблему. Вот ссылка, которая может вам помочь: http://www.regular -expressions.info / java.html

0 голосов
/ 06 июня 2010

Этот код:

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)
0 голосов
/ 06 июня 2010

Этот код должен работать. Хороший должен быть 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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...