Java替换字符串中的特殊字符

时间:2011-09-08 17:52:05

标签: java jdk1.5

我有一个这样的字符串:

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

我想删除所有新行字符并将结果显示为:

BEGIN THIS IS A STRING END

我如何做到这一点?由于我的经验中的转义顺序,标准API函数将无法工作。

7 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

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

如果它们没有换行符,但文字"\n"会枯萎,请尝试:

replace("\\n", " ")

或:

replaceAll("(\\\\n){2,}", " ")

答案 2 :(得分: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("  ", " ");
}

答案 3 :(得分:1)

这对我有用:

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

关键是注册表。

答案 4 :(得分:0)

当然,标准API可行,但您可能需要双重转义(“\\ n”)。

答案 5 :(得分:0)

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

答案 6 :(得分: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);