2010-12-01 113 views
5

我意识到这里有很多问题,但我还没有找到适合我的情况的解决方案。我知道string.trim(),它没有效果。在线上研究并发现了一个讨厌string.trim()的世界之后,我意识到我试图删除的空白字符必须超出.trim()的范围。修剪Java中的字符串空白

我正在使用一些我并不完全理解的正则表达式来除去'='和','以及所有空白字符串,如果它紧跟在','之后,则不带字符串。

但是,我现在要完全删除字符串中的所有空格。任何想法如何编辑正在使用我来完成这个正则表达式将不胜感激。再次,我想要的是'='和','还有数字和字母。所有空格和其他特殊字符都应该删除。

这里是到目前为止的代码:

if (argsToBeFiltered != null) { 
      // Remove all whitespace and chars apart from = and , 
      String filteredArgs = argsToBeFiltered.replaceAll(
        "[^=,\\da-zA-Z\\s]|(?<!,)\\s", ""); 
      return filteredArgs; 
} 

回答

5

时间去学习正则表达式!

请参阅Pattern和各种正则表达式教程,如Lesson: Regular Expressions

[^=,\\da-zA-Z\\s] 

那部分表示匹配NOT(^)中的字符:=,,数字(\ d),A-Z(A-Z)或空白(\ S)。但是,您可能希望它现在匹配空格(因为没有第二个逗号部分来匹配它们)。所以:

argsToBeFiltered.replaceAll("[^=,\\da-zA-Z]", ""); 
+3

这是不完全正确。 `\\ s`(或字符串转义后的`\ s`)不仅仅是空格,还包括垂直和水平制表符,回车符/换行符等等...... – Powerlord 2010-12-01 18:38:39

+0

Thankyouthankyouthankyouthankyouthankyou !!!!! – Frank 2010-12-01 18:38:43

1

试试这个: -

if (argsToBeFiltered != null) { 
      // Remove all whitespace and chars apart from = and , 
      String filteredArgs = argsToBeFiltered.replaceAll(
        "\\w+"); 
      return filteredArgs; 
}