所以我正在使用Java中的一个庞大的数据集来尝试擦除除字母字符之外的所有内容。现在我正在这样做:
snippet = snippet.toLowerCase();
snippet.replaceAll("[^A-Za-z]", "");
然而,消毒不按计划进行。一些无关的@
,#
,?
和:
正在逐步完成。想法?
答案 0 :(得分:6)
在java中,Strings为immutable - 无法更改其值。因此,replaceAll()
返回更改后的字符串;它不会更改调用它的字符串。
您必须将返回值分配回变量:
snippet = snippet.replaceAll("[^A-Za-z]", "");
虽然这种行为最初似乎是“非面向对象的”,但当类是不可变的时,它确实有意义。
此外,您不需要调用.toLowerCase()
- 您的正则表达式也匹配大写字母。