我如何替换所有的换行符从一个字符串在Java在这样的方式,将工作在Windows和Linux(即没有具体的操作系统的回车/换行/新行等问题)?

我尝试过(注意readFileAsString是一个将文本文件读入String的函数):

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

但这似乎并不奏效。

如何做到这一点呢?


当前回答

可以使用泛型方法用任意字符替换任意字符。

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++;
    }

}

其他回答

我发现奇怪的是(Apache) StringUtils还没有在这里被覆盖。

您可以使用.replace方法从字符串中删除所有换行符(或任何其他出现的子字符串)

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

这一行将用空字符串替换所有换行符。

因为换行符在技术上是一个字符,你可以选择使用. replacecars方法来替换字符

StringUtils.replaceChars(myString, '\n', '');
String text = readFileAsString("textfile.txt").replace("\n","");

.replace返回一个新字符串,Java中的字符串是不可变的。

可以使用泛型方法用任意字符替换任意字符。

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++;
    }

}

我想这是很有效的

String s;
s = "try this\n try me.";
s.replaceAll("[\\r\\n]+", "")

供参考,如果你想用单行换行代替同时的多换行,那么你可以使用

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

或替换为单个空格

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