Разделить строку по символу новой строки

Я пытаюсь разбить строки в этом файле eng-pol.txt по символу новой строки "\n", и он просто не работает... Я пытался:

String[] words = strLine.split("\n");
System.out.println(Arrays.toString(words));
[abbot    abbot [ˈæbət] <N>\n opat]

String[] words = strLine.split("\\n");
System.out.println(Arrays.toString(words));
[abbot    abbot [ˈæbət] <N>\n opat]

String[] words = strLine.split("\\r|\r");
System.out.println(Arrays.toString(words));
[abbot    abbot [ˈæbət] <N>\n opat]

Даже это:

String[] words = strLine.split(System.getProperty("line.separator"));
System.out.println(Arrays.toString(words));
[abbot    abbot [ˈæbət] <N>\n opat]

Я читаю файл используя BufferedReader а также readLine метод.

1 ответ

Решение

Я не уверен, правильно ли я вас понимаю, но вижу, что ваш файл содержит \n литералы (не фактические разрывы строк). Если вы хотите разделить их, вам нужно написать split как

split("\\\\n")

Регулярное выражение, которое представляет \ буквально выглядит как \\ (его нужно экранировать, иначе \ будет рассматриваться, например, как начало предопределенного класса символов, например \d который представляет цифры).

Но String, которая будет представлять такое регулярное выражение \\ нужно записать как "\\\\" потому что в строке \ также особенный, и его также нужно избегать.

Короче, чтобы соответствовать \ с регулярным выражением вам нужно избежать его на двух уровнях:

  • в регулярном выражении \\
  • в строке "\\\\",
Другие вопросы по тегам