1

所以我正在使用 Java 中的一个巨大的数据集,试图清除除字母字符之外的所有文本。现在我正在这样做:

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

然而,消毒并没有按计划进行。一些无关@的 , #,?:正在通过。想法?

4

1 回答 1

6

在java中,字符串不可变的——它们的值不能改变。因此,返回更改后的字符串;它不会更改调用它的字符串。replaceAll()

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

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

尽管这种行为起初看起来是“非面向对象的”,但当类是不可变的时,它确实有意义。

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

于 2012-06-07T19:13:08.367 回答