Java 仅从字符串中删除空格

Java 仅从字符串中删除空格,java,string,Java,String,我有一个字符串,它是XML数据。删除一些节点并添加几个节点后。xml数据中有很多空格(在删除节点时创建) 字符串操作后的所需输出 <A> <B> </B> <c> </c> <E> </E> </A> 我可以使用replaceAll(“\s”,”),但这甚至会删除新行字符,并使xml脱离在UI中显示它的结构 有没有办法在不修剪新行字符的情况下修剪它 编辑:这个XML数据是OmeElemen

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


字符串操作后的所需输出

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

我可以使用replaceAll(“\s”,”),但这甚至会删除新行字符,并使xml脱离在UI中显示它的结构

有没有办法在不修剪新行字符的情况下修剪它


编辑:这个XML数据是OmeElement的一部分,你能解释一下你的意思吗?如果您是指除新行以外的空白,请尝试以下操作

str = str.replaceAll("[ \t\x0B\f\r]", "");
。。。或者,您的意思是要删除无关的新行吗

str = str.replaceAll("\n{2,}", "\n");
。。。还是只想删除文本
'
空格

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

尝试使用
someString.replaceAll(“\\u0020”和“”)
这个字符串是空格的内切,应该完成这个任务

编辑:
如果你需要其他的,看看。您将在tchrist的答案中找到其他选项。

我建议使用regex
str.replaceAll(“(]+>)\\s+(]+>),“$1\n$2”)
来检测标记之间的空格并删除它们。它只留下行的单端

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

指定此工厂创建的解析器必须消除元素内容中的空白(有时也称为“可忽略空白”)


这是一种代价高昂的方法

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字符串对象都是在内部创建的

问候

Dheeraj Joshi

用一行替换两个连续的换行符如何?您是否尝试过
str.replaceAll(“\n+”,“\n”)
?您可以使用
replaceAll(“,”)
删除文档中的所有空格或类似
replaceAll(“>\s+是,我尝试过str.replaceAll(“\n+”,“\n”)。但它给了我想要的结果。String strXmlData=xmloaddata.toString();strXmlData=strXmlData.replaceAll(“\n+”,“\n”);原始strXmlData和替换后它们是一样的。是的,我尝试了str.replaceAll(“\n+”,“\n”)。但它给了我想要的结果。String strXmlData=xmloaddata.toString();strXmlData=strXmlData.replaceAll(“\n+“,”\n“;原始strXmlData和替换后它们是相同的。@DheerajJoshi您能告诉我们关于
str.replaceAll(“(\\s)+”,“\\1”);
不,它没有以我想要的方式给我字符串:(@DheerajJoshi你能说得更具体一点吗?@oldrib。它尝试删除所有空格和新行字符,而不仅仅是空格。它删除和之间的新行字符。我的目的是只删除和之间的那些额外行,类似地,基本上从节点B的结束标记和标记C的开始节点,节点C的结束标记和的开始标记节点EI正在使用XMLInputFactory创建新的XML
factory.setValidating(true);
factory.setIgnoringElementContentWhitespace(true);
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);
       }
}