所以我正在使用 Java 中的一个巨大的数据集,试图清除除字母字符之外的所有文本。现在我正在这样做:
snippet = snippet.toLowerCase();
snippet.replaceAll("[^A-Za-z]", "");
然而,消毒并没有按计划进行。一些无关@
的 , #
,?
和:
正在通过。想法?
在java中,字符串是不可变的——它们的值不能改变。因此,返回更改后的字符串;它不会更改调用它的字符串。replaceAll()
您必须将返回值分配回变量:
snippet = snippet.replaceAll("[^A-Za-z]", "");
尽管这种行为起初看起来是“非面向对象的”,但当类是不可变的时,它确实有意义。
此外,您不需要调用.toLowerCase()
- 您的正则表达式也匹配大写字母。