String.replaceAll让一些人通过裂缝

时间:2012-06-07 19:08:38

标签: java regex string replace

所以我正在使用Java中的一个庞大的数据集来尝试擦除除字母字符之外的所有内容。现在我正在这样做:

snippet = snippet.toLowerCase();
snippet.replaceAll("[^A-Za-z]", "");                
然而,消毒不按计划进行。一些无关的@#?:正在逐步完成。想法?

1 个答案:

答案 0 :(得分:6)

在java中,Stringsimmutable - 无法更改其值。因此,replaceAll() 返回更改后的字符串;它不会更改调用它的字符串。

您必须返回值分配回变量:

snippet = snippet.replaceAll("[^A-Za-z]", "");

虽然这种行为最初似乎是“非面向对象的”,但当类是不可变的时,它确实有意义。

此外,您不需要调用.toLowerCase() - 您的正则表达式也匹配大写字母。