Как удалить разрывы строк из файла в Java? - PullRequest
231 голосов
/ 29 января 2010

Как я могу заменить все разрывы строк из строки в Java таким образом, чтобы это работало в Windows и Linux (т. Е. Без особых проблем ОС при возврате каретки / переводе строки / новой строке и т. Д.)?

Я пробовал (обратите внимание, что readFileAsString - это функция, которая считывает текстовый файл в строку):

String text = readFileAsString("textfile.txt");
text.replace("\n", "");

но это, похоже, не работает.

Как это можно сделать?

Ответы [ 16 ]

1 голос
/ 02 июля 2016

Мне кажется странным, что (Apache) StringUtils здесь еще не освещен.

вы можете удалить все новые строки (или любые другие вхождения подстроки по этому вопросу) из строки, используя метод .replace

StringUtils.replace(myString, "\n", "");

Эта строка заменит все новые строки пустой строкой.

поскольку символ новой строки технически является символом, вы можете дополнительно использовать метод .replaceChars, который заменит символы

StringUtils.replaceChars(myString, '\n', '');
0 голосов
/ 22 мая 2018

org.apache.commons.lang.StringUtils # chopNewline

0 голосов
/ 31 марта 2017

Вы можете использовать универсальные методы для замены любого символа любым другим.

public static void removeWithAnyChar(String str, char replceChar,
        char replaceWith) {
    char chrs[] = str.toCharArray();
    int i = 0;
    while (i < chrs.length) {

        if (chrs[i] == replceChar) {
            chrs[i] = replaceWith;
        }
        i++;
    }

}
0 голосов
/ 19 сентября 2016

К вашему сведению, если вы хотите заменить одновременные разрывы строк на один, то можете использовать

myString.trim().replaceAll("[\n]{2,}", "\n")

или заменить на один пробел

myString.trim().replaceAll("[\n]{2,}", " ")
0 голосов
/ 22 января 2016

Вы можете использовать apache commons IOUtils, чтобы перебрать строку и добавить каждую строку в StringBuilder. И не забудьте закрыть InputStream

StringBuilder sb = new StringBuilder();
FileInputStream fin=new FileInputStream("textfile.txt");
LineIterator lt=IOUtils.lineIterator(fin, "utf-8");
while(lt.hasNext())
{
  sb.append(lt.nextLine());
}
String text = sb.toString();
IOUtils.closeQuitely(fin);
0 голосов
/ 09 ноября 2012

Попробуйте сделать это:

 textValue= textValue.replaceAll("\n", "");
 textValue= textValue.replaceAll("\t", "");
 textValue= textValue.replaceAll("\\n", "");
 textValue= textValue.replaceAll("\\t", "");
 textValue= textValue.replaceAll("\r", "");
 textValue= textValue.replaceAll("\\r", "");
 textValue= textValue.replaceAll("\r\n", "");
 textValue= textValue.replaceAll("\\r\\n", "");
...