我正在尝试编写一个方法,该方法可以从Java中删除所有非字母字符String[]
然后将字符串转换为小写字符串。我尝试使用正则表达式将所有非字母字符的出现替换为""
.However,我得到的输出不能这样做。以下是代码
static String[] inputValidator(String[] line) {
for(int i = 0; i < line.length; i++) {
line[i].replaceAll("[^a-zA-Z]", "");
line[i].toLowerCase();
}
return line;
}
但是,如果我试图提供一个没有字母的输入(比如-
或者
.
)输出也由它们组成,因为它们没有被删除。
示例输入
A dog is an animal. Animals are not people.
我得到的输出
A
dog
is
an
animal.
Animals
are
not
people.
预期的输出
a
dog
is
an
animal
animals
are
not
people
发布于 2012-06-22 11:24:55
问题是您的更改没有被存储,因为字符串immutable..。每一个
方法calls(http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#replaceAll) [返回一个新的String
表示更改,并使用当前String
保持不变。您只需要存储返回的String
回到数组中。
line[i] = line[i].replaceAll("[^a-zA-Z]", "");
line[i] = line[i].toLowerCase();
因为each方法返回一个String
您可以将您的方法调用链接在一起。这将对第一个方法的结果执行第二个方法调用,允许您在一行中执行这两个操作。
line[i] = line[i].replaceAll("[^a-zA-Z]", "").toLowerCase();
发布于 2012-06-22 11:25:39
您需要将正则表达式的结果分配回各行我..。
for ( int i = 0; i < line.length; i++) {
line[i] = line[i].replaceAll("[^a-zA-Z]", "").toLowerCase();
}
发布于 2012-06-22 11:24:31
它不起作用,因为字符串是不可变的,你需要设置一个值,例如
line[i] = line[i].toLowerCase();
https://stackoverflow.com/questions/11149759
复制相似问题