1

我有一个这样的字符串:

BEGIN\n\n\n\nTHIS IS A STRING\n\nEND

我想删除所有换行符,结果如下:

BEGIN THIS IS A STRING END

我如何做到这一点?根据我的经验,由于转义序列,标准 API 函数将不起作用。

4

7 回答 7

2

尝试str.replaceAll("\\\\n", "");-这称为双重转义:)

于 2011-09-08T17:56:40.563 回答
1

一个简单replace('\n', ' ')的将导致字符串变为:

 BEGIN    THIS IS A STRING  END
      ****                **

其中*'s 是空格。如果您想要单个空格,请尝试replaceAll("[\r\n]{2,}", " ")

如果它们不是换行符而是文字"\n"的枯萎尝试:

replace("\\n", " ")

或者:

replaceAll("(\\\\n){2,}", " ")
于 2011-09-08T17:57:05.673 回答
1
String str = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND;";

str = str.replaceAll("\\\n", " ");

// Remove extra white spaces
while (str.indexOf("  ") > 0) {
   str = str.replaceAll("  ", " ");
}
于 2011-09-08T17:57:22.867 回答
1

这对我有用:

String s = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND";
String t = s.replaceAll("[\n]+", " ");
System.out.println(t);

关键是正则表达式。

于 2011-09-08T18:00:17.523 回答
0

当然,标准 API 可以工作,但您可能需要双重转义 ("\\n")。

于 2011-09-08T17:54:59.740 回答
0

我通常不使用 Java 编写代码,但快速搜索让我相信 String.trim 应该适合您。它说它删除了前导和尾随空格以及 \n \t 等......

于 2011-09-08T18:02:35.970 回答
0

希望这个片段会有所帮助,

Scanner sc = new Scanner(new StringReader("BEGIN\n\n\n\nTHIS IS A STRING\n\nEND "));
    String out = "";
    while (sc.hasNext()) {
        out += sc.next() + " ";
    }
    System.out.println(out);
于 2011-09-08T18:11:17.333 回答