Разделить строку по символу новой строки
Я пытаюсь разбить строки в этом файле 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, которая будет представлять такое регулярное выражение \\
нужно записать как "\\\\"
потому что в строке \
также особенный, и его также нужно избегать.
Короче, чтобы соответствовать \
с регулярным выражением вам нужно избежать его на двух уровнях:
- в регулярном выражении
\\
- в строке
"\\\\"
,