【问题标题】:Java replace special characters in a stringJava替换字符串中的特殊字符
【发布时间】:2011-09-08 17:52:05
【问题描述】:

我有一个这样的字符串:

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

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

BEGIN THIS IS A STRING END

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

【问题讨论】:

标签: java jdk1.5


【解决方案1】:

试试str.replaceAll("\\\\n", ""); - 这叫做双重转义:)

【讨论】:

    【解决方案2】:

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

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

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

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

    replace("\\n", " ")
    

    或:

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

    【讨论】:

      【解决方案3】:

      这对我有用:

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

      关键是正则表达式。

      【讨论】:

        【解决方案4】:
        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("  ", " ");
        }
        

        【讨论】:

        • 这给出了准确的预期输出。
        【解决方案5】:

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

        【讨论】:

        • 喜欢:str.replaceAll("\\n", "") ?
        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          希望这个 sn-p 会有所帮助,

          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);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-12-13
            • 1970-01-01
            • 1970-01-01
            • 2014-12-07
            相关资源
            最近更新 更多