【问题标题】:How do I replace line break with "\n" with java? [duplicate]java - 如何用“\ n”替换换行符? [复制]
【发布时间】:2019-09-19 04:22:35
【问题描述】:

我想用“\n”替换换行符,但我的代码不起作用。

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

预期:“Hello\n World”

实际:

“你好

世界”

【问题讨论】:

  • 如果您仔细查看您的代码,为什么如果您用完全相同的东西替换某些东西会发生什么?你可能想替换它\\n
  • 好的,很明显预期和实际结果,但是。你能指定输入吗?
  • 我正在从包含“Hello(line break) World”的 txt 文件中读取 str

标签: java replace newline


【解决方案1】:

如果你想让反斜杠出现,你必须转义它。否则将被解释为换行。

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

【讨论】:

  • 这不是给“Hello n world”吗?
  • 它为我输出“Hellon World”
  • 是的,我们需要单独的转义反斜杠。编辑了答案
  • 太棒了!我会把这个作为答案,谢谢!
【解决方案2】:

'\n' 表示像 '\t' 这样的新行是一个制表符,'\' 是一个转义字符,这意味着它后面的字符不会作为普通文本处理(您应该阅读转义字符更多细节),所以如果你想实际输入'\',那么你需要用'\'来表示它,这意味着如果你想要'\n',你应该输入'\n'。请检查转义字符,不要在不理解的情况下使用此信息。

【讨论】:

  • 这是对其中一个答案的评论,还是对其中一个 cmets 的回应?
【解决方案3】:

试试这个。

class Scratch {
    public static void main(String[] args) {
        System.out.println("Hello\n world".replace("\n", "\\n"));
    }
}

【讨论】:

    【解决方案4】:

    您可以使用以下 3 种方法来使您的代码正常工作:

    #1
    text = str.replace("\n", "\\n");
    
    #2
    text = str.replace(System.getProperty("line.separator"), "\\n");
    
    #3
    text = text.replaceAll("\\n", "\\\\n");
    

    【讨论】:

    • 方法 #3 不会产生两个字符 \n 而是单个换行符。 \ 在正则表达式替换部分中也很特殊,因为它具有 $ 元字符,可以用作 $groupID${groupName} 以重用来自捕获组的匹配。为了让我们转义$,正则表达式在这里也使用\,这使得\ 元字符,所以为了转义\,我们需要另一个\。所以我们需要两次转义\,一次是在正则表达式中,一次是\\,一次是在字符串字面量"\\\\"中。
    • @Pshemo,谢谢你的建议,我编辑我的答案
    【解决方案5】:

    您可以使用以下代码来做到这一点

    String hello = "hello\nworld";
    hello=hello.replaceAll("\\n", "\\\\n");
    System.out.println(hello);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 2014-10-16
      相关资源
      最近更新 更多