【问题标题】:Remove only white spaces from a String仅从字符串中删除空格
【发布时间】:2012-09-05 02:23:12
【问题描述】:

我有一个字符串,它是 XML 数据。删除一些节点并添加一些节点后。 xml 数据中有很多空格(在节点删除期间创建。)

<A>
<B>
</B>

<!-- some node i deleted and lot of white spaces -->



<c>
</c>


<!-- some more node i deleted and lot of white spaces -->




<E>
</E>

字符串操作后的期望输出

<A>
<B>
</B>
<c>
</c>
<E>
</E>
</A>

我可以使用 replaceAll("\s","") 但这甚至会删除换行符,并使 xml 的结构无法在 UI 中显示。

有没有办法在不修剪换行符的情况下修剪它?

编辑:此 XML 数据是 OMElement 的一部分

【问题讨论】:

  • 用一个替换两个连续的换行符怎么样?
  • 你试过str.replaceAll("\n+", "\n")吗?
  • 您可以使用replaceAll(" ", "") 删除文档中的所有空格或类似replaceAll("&gt;\s+&lt;", "\n") 将标签之间的所有空格字符(包括空格、制表符和换行符)替换为仅换行符
  • 是的,我试过 str.replaceAll("\n+", "\n")。但它给了我想要的结果。字符串 strXmlData = xmlLoadData.toString(); strXmlData = strXmlData.replaceAll("\n+", "\n");原来的 strXmlData 和替换后都是一样的。

标签: java string


【解决方案1】:

你能澄清一下你的意思吗?如果您的意思是空格 other 而不是换行符,请尝试以下操作。

str = str.replaceAll("[ \t\x0B\f\r]", "");

...或者,您的意思是要删除无关的新行?

str = str.replaceAll("\n{2,}", "\n");

...还是只想删除文字 ' ' 空格?

str = str.replace(" ", "");

【讨论】:

【解决方案2】:

尝试使用someString.replaceAll("\\u0020","") 这个字符串是空格的结尾,应该可以完成这项工作

编辑: 如果您需要其他,请查看this question。你会在 tchrist 的回答中找到其他人。

【讨论】:

    【解决方案3】:

    我建议使用正则表达式str.replaceAll("(&lt;/[^&gt;]+&gt;)\\s+(&lt;[^&gt;]+&gt;)","$1\n$2") 来检测标签之间的空格并删除它们。它只留下一个行尾

    【讨论】:

      【解决方案4】:

      如果您使用DocumentBuilder修改XML,那么您也可以使用下面的方法。

      DocumentBuilderFactory.setIgnoringElementContentWhitespace

      指定由该工厂创建的解析器必须消除元素内容中的空格(有时被松散地称为“可忽略的空格”)

      factory.setValidating(true);
      factory.setIgnoringElementContentWhitespace(true);
      

      【讨论】:

      • 我正在使用 XMLInputFactory 来创建新的 XML
      【解决方案5】:

      这样做的成本很高。

      Scanner scanner = new Scanner(str);
      StringBuffer strBuff = new StringBuffer();
      while(scanner.hasNextLine()){
             String line = scanner.nextLine();
                 if(line.length() > 0 && !line.trim().equals("")){
                       strBuff.append("\n");
               strBuff.append(line);
             }
      }
      

      最终,当循环结束时,我们可以从 xml 中删除空行,并且 xml 将形成良好的格式。如您所见,这对于大型 xml 并不理想,因为大量 xml 字符串对象是在内部创建的。

      问候
      迪拉吉·乔希

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-21
        • 2017-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多