【问题标题】:Cannot remove newline characters (\n) in a java String. is it even possible?无法删除 java 字符串中的换行符 (\n)。有可能吗?
【发布时间】:2015-04-07 01:30:22
【问题描述】:

基本上,我要做的就是从 Java 中的字符串中删除换行符。我看过几十篇提出类似问题的帖子,他们都说了同样的话,但似乎没有一个对我有用。这是我有 3 行的所有代码:

    String text = "\\n          texttexttext     \\n";
    text = text.replaceAll("\\n", "");
    System.out.println(text);

该字符串与我实际尝试使用的字符串相似,但即使使用此字符串,我也无法找到换行符并替换它。 replaceAll 只是看不到它,我不知道为什么。

我也尝试过很多其他的东西,比如

    text = text.replaceAll("\\n", "").replaceAll("\\r", "");

    text = text.replaceAll("\\r\\n|\\r|\\n", " ");

但没有任何东西可以找到这个角色。我什至无法使用 Regex Pattern 和 Matcher 对象找到它。我正在做的唯一一件有点不寻常的事情是在 Junit Test bean 中做,但我不敢相信它会做任何事情。

【问题讨论】:

  • 您打印的是txt 而不是文本 - 这是有意的吗?
  • String text = "\\n texttexttext \\n";, "\\n" 这里不是换行符,它实际上是一个 "\n"。
  • 是的,对不起。名字不是问题。为清楚起见,我只是在帖子中更改了一些变量名称,并在其中犯了一个错误,我会修复它。但我不认为你的建议是为我解决它。我尝试过使用“\\n”、“\n”,甚至“\\\n”,但什么都找不到。

标签: java string newline


【解决方案1】:

如果head = 'Hello' 但当你print(head) -> 'Hello\n' 您可以通过rstrip()remove() 删除\n

你可以使用我的代码

**head=a[0:(len(head)-1)]**

删除隐藏在字符串中的\n

(在 py 3 上测试) 祝你好运!!

【讨论】:

    【解决方案2】:

    正如乔恩·林所说

    您的示例文本实际上并没有讨论换行符 - \\n 是字符串 \n

    另一个谬误是replaceAll 期望一个正则表达式作为第一个输入。所以\\n 实际上被替换为\n,因为\ 是转义字符,然后将其解释为换行符 - 双重转义的情况,因此在您的输入文本中\\ 不匹配。

    如果你尝试

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

    至少你得到了预期的结果,因为它既是 Java 字符串,又是正则表达式,都将 \ 解释为转义字符。

    【讨论】:

    • \n 是一个已定义的正则表达式字符。问题只是,字符串中没有新行。
    • 哇,成功了。我不知道为什么我之前没有尝试过。我在这上面浪费了将近 2 个小时,谢谢。
    【解决方案3】:

    除了@rgettman 的回答并且为了使其对社区有用,下面是一个很棒的Java 程序(有关更多信息,您可以阅读here 的整篇文章。)替换换行符。

    public class StringReplaceTask{
    
    
        public static void main(String args[]) {
    
            // Removing new line characters form Java String
            String sample="We are going to replace newline character \\n "
                    + "New line should start now if \\n \n is working";
    
            System.out.println("Original String: " + sample);
    
            //replacing \n or newline character so that all text come in one line
            System.out.println("Escaped String: " + sample.replaceAll("\n", ""));
    
    
            // removing line breaks from String read from text file in Java
            String text = readFileAsString("words.txt");
            text = text.replace(System.getProperty("line.separator"), "");
    
        }  
    

    【讨论】:

      【解决方案4】:
      String newLine = System.getProperty("line.separator")
      System.out.println(newLine.contains("\n")); // this is a new line
      System.out.println(newLine.contains("\\n"));
      

      输出:

      true
      false
      

      【讨论】:

        【解决方案5】:

        您的原始text 中没有换行符。您已经转义了反斜杠,而不是 n,因此您的 text 字符串中有实际的反斜杠 \n 字符。

        您确实必须在正则表达式中转义反斜杠字符,而不是在您的文字字符串文本中。

        如果您将text 初始化为"\n texttexttext \n",那么它将按预期查找并替换这些换行符。

        【讨论】:

        • 是的,这似乎可行,但我不明白为什么我无法找到字符串“\\n”。我实际上要解析的是一个大文档,所以我想我必须在其中找到“\\n”,然后将它们更改为“\n”。但无论如何,对我来说,在字符串中找到“\\n”是个问题。
        • 要在字符串中查找\\n,您需要一个在n 之前包含两个反斜杠字符的正则表达式,Java 本身也需要对这两个反斜杠字符进行转义——@987654330 @.
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-25
        • 1970-01-01
        • 2023-03-23
        • 2020-02-16
        • 1970-01-01
        • 2012-06-01
        • 2012-10-29
        相关资源
        最近更新 更多