Java 让一些木炭穿过裂缝

Java 让一些木炭穿过裂缝,java,regex,string,replace,Java,Regex,String,Replace,因此,我正在用Java处理一个巨大的数据集,试图删除除字母字符以外的所有文本。现在,我正在与以下人员合作: snippet = snippet.toLowerCase(); snippet.replaceAll("[^A-Za-z]", ""); 然而,卫生处理并没有按计划进行。一些无关的@、#、?和:正在通过。想法?在java中是——它们的价值无法改变。因此,返回更改后的字符串;它不会更改调用它的字符串 必须将返回值重新分配给变量: snippet = sni

因此,我正在用Java处理一个巨大的数据集,试图删除除字母字符以外的所有文本。现在,我正在与以下人员合作:

snippet = snippet.toLowerCase();
snippet.replaceAll("[^A-Za-z]", "");                
然而,卫生处理并没有按计划进行。一些无关的
@
#
正在通过。想法?

在java中是——它们的价值无法改变。因此,返回更改后的字符串;它不会更改调用它的字符串

必须将返回值重新分配给变量:

snippet = snippet.replaceAll("[^A-Za-z]", "");
虽然这种行为起初看起来是“非面向对象的”,但当类是不可变的时,它确实是有意义的

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

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

必须将返回值重新分配给变量:

snippet = snippet.replaceAll("[^A-Za-z]", "");
虽然这种行为起初看起来是“非面向对象的”,但当类是不可变的时,它确实是有意义的


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

如果您正在执行
snippet.toLowerCase()
那么你不需要
[^A-Za-z]
,你只需要使用
[^A-z]
。您可能应该这样做,因为在
toLowerCase()
之后保留大写字母的任何内容最初都不是以大写字母开头的。我认为发生这种情况的唯一方法是将utf-8字符串作为ascii字符字符串读取那么你不需要
[^A-Za-z]
,你只需要使用
[^A-z]
。您可能应该这样做,因为在
toLowerCase()
之后保留大写字母的任何内容最初都不是以大写字母开头的。我认为发生这种情况的唯一方法是将utf-8字符串作为ascii字符字符串读取。