Удаление переносов строк из файла в Java: кроссплатформенно
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Сжатое выражение, позволяющее убрать переводы строк из файла в Java:
Files.writeString(Paths.get("yourfile.txt"), Files.readString(Paths.get("yourfile.txt")).replaceAll("\\R", ""));
Этот код сначала считывает содержимое файла при помощи Files.readString
, затем удаляет все переводы строк с помощью функции replaceAll("\\R", "")
и, наконец, перезаписывает файл при помощи Files.writeString
. Просто и изящно!
Истина без сомнения: строки в Java
Строки в Java являются объектами, которые не могут быть изменены после их создания. Пока старое поколение упорно продолжает использовать кнопочные телефоны, строки стойко противостоят изменениям. Поэтому при удалении переводов строк или любой другой обработки строк требуется переназначение переменной:
String content = Files.readString(Paths.get("yourfile.txt"));
content = content.replace("\n", "").replace("\r", "");
Files.writeString(Paths.get("yourfile.txt"), content);
Универсальных переводы строк: Java-универсал
Java предлагает кросс-платформенное решение — System.getProperty("line.separator")
, гарантирующее корректное выполнение в различных ОС:
String newline = System.getProperty("line.separator");
String content = Files.readString(Paths.get("yourfile.txt"));
content = content.replace(newline, "");
Files.writeString(Paths.get("yourfile.txt"), content);
Попавшие в сеть: использование Regex для повышения эффективности
С помощью регулярных выражений можно одновременно обрабатывать переводы строк разных типов:
String content = Files.readString(Paths.get("yourfile.txt"));
content = content.replaceAll("\\r\\n|\\r|\\n", "");
Files.writeString(Paths.get("yourfile.txt"), content);
Пробелы на страже от катастрофы конкатенации
Иногда переводы строк отделяют слова друг от друга, и их удаление без замены на пробел может вызвать некорректное слияние слов:
String content = Files.readString(Paths.get("yourfile.txt"));
content = content.replaceAll("\\R+", " ");
Files.writeString(Paths.get("yourfile.txt"), content);
При поддержке Apache Commons Lang
Apache Commons Lang предлагает StringUtils.normalizeSpace
для упрощения нормализации пробелов в строках:
String content = FileUtils.readFileToString(new File("yourfile.txt"), Charset.defaultCharset());
content = StringUtils.normalizeSpace(content);
FileUtils.writeStringToFile(new File("yourfile.txt"), content, Charset.defaultCharset());
Вы можете добавить Apache Commons Lang в свой проект и использовать данный инструмент.
Визуализация
Восприятие файла можно представить как поезд, в вагонах которого расположены предложения, разделенные переводами строк:
🚂 = [Предложение 1⏎, Предложение 2⏎, Предложение 3⏎]
⏎ символизирует перевод строки.
text.withoutLineBreaks = text.replaceAll("\\R", "");
Теперь наш поезд не останавливается на станциях:
🚂 = [Предложение 1, Предложение 2, Предложение 3]
Наш поезд предложений превратился в молниеносный экспресс!
Стремимся к стремимся к идеалу (и к получению большего числа голосов на StackOverflow... хотя это и не главное)
Для эффективного удаления переводов строк необходима тщательная планировка и подход:
- Используйте
line.separator
для обеспечения совместимости между различными ОС. - Заменяйте переводы строк на пробелы там, где это нужно, чтобы предотвратить нежелательную конкатенацию слов.
- Используйте регулярные выражения, они обеспечивают гибкость в обработке переводов строк.
- При работе с большими файлами обрабатывайте их построчно для экономии ресурсов.
- Следите за кодировками файлов, так как они могут искажать переводы строк и другие символы.
Полезные материалы
- java.nio.file (Java Platform SE 8) — официальная документация Java для работы с файлами.
- Чтение и запись текстовых файлов — рекомендации по работе с файловым вводом/выводом в Java.
- Чтение обычного текстового файла в Java – Stack Overflow — обсуждение потенциальных решений для чтения файлов в Java.
- Ввод/вывод файлов (использование NIO.2) (The Java™ Tutorials > Essential Java Classes > Basic I/O) — руководство по основным операциям с файлами в Java.
- Удаление пробелов из строк в Java – Stack Overflow — обсуждение удаления лишних символов из строк.
- От удаления символа до изменения строки в Java | DigitalOcean — методы работы со строками в Java.
- Чтение файла в строку в Java (с примерами) — различные способы чтения файла в строку.