Разделить строку между строками с помощью регулярного выражения

Разделить строку между строками с помощью регулярного выражения

Разделить строку между строками с помощью регулярного выражения

Разделить строку между строками с помощью регулярного выражения

Я хочу разделить файл на картинке, и я не могу из-за строк ... Я получаю все вместе. Какую команду в регулярном выражении нужно разделить, даже если есть новая строка?

Пожалуйста, разместите код и содержимое файла в виде текста, а не изображения. редактировать вопрос соответственно. См. Не рекомендуется делать скриншоты кода и / или ошибок

AxelH 02.05.2018 11:55
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это должно делать:

protasi[] = string.split("\\r?\\n");

split("\n") не будет работать, потому что вам нужно предоставить обратную косую черту для \n, которая становится \\n. Я также добавил \\r, который мы должны использовать для перевода строки / возврата каретки.

Когда String задана как переменная, она работает, но если я читаю ее из текстового файла, это не так.

Nicolas Neofytou 02.05.2018 12:01

Пожалуйста, объясните, почему это решение должно быть действительным в ответе. Это поможет OP понять свою ошибку и больше не повторять ее.

AxelH 02.05.2018 12:11

Аксель, твой ответ был полезен. вот что я сделал! Благодарность

Nicolas Neofytou 03.05.2018 00:14
Ответ принят как подходящий

Вы читаете файл, используя Scanner, чтобы получить каждую строку.

 while(sc.hasNextLine())

Вы добавляете StringBuffer к каждой строке (без разделителей).

sb.append(sc.nextLine())

Итак, в этот момент файл с:

foo
bar

Отдал бы StringBuffer с

sb.toString(); //foobar

Так что разделителя строк не осталось ... Вместо этого сделайте это с Scanner.

while(sc.hasNextLine()){
    String s = sc.nextLine();
    System.out.println(s):
    sb.append(s);
}

И последнее: закройте все Scanner, которые вы открываете с помощью sc.close(), когда закончите с ними (это хорошая практика).

Обновлено:

Если вы хотите сохранить эту логику, просто добавьте разделитель строк после каждой строки:

while(sc.hasNextLine()){
    sb.append(sc.nextLine()).append("\n");
}

Таким образом, у вас всегда будет разделитель строк, и разделение будет работать

Быстрый пример того, как это будет выглядеть:

StringBuffer sb = new StringBuffer();
sb.append("foo").append("\n")
  .append("bar").append("\n"); //fake "file reading"

String[] result = sb.toString().split("\n");
for(String s : result){
    System.out.println(s);
}

foo
bar

Другие вопросы по теме