hyt*_*ucx 22 java regex string
我正在尝试编写一个方法,从Java中删除所有非字母字符String[],然后将String转换为小写字符串.我已经尝试使用正则表达式替换所有非字母字符的出现.""但是,我得到的输出不能这样做.这是代码
static String[] inputValidator(String[] line) {
for(int i = 0; i < line.length; i++) {
line[i].replaceAll("[^a-zA-Z]", "");
line[i].toLowerCase();
}
return line;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试提供具有非字母(例如-或.)的输入,则输出也包含它们,因为它们不会被删除.
示例输入
A dog is an animal. Animals are not people.
Run Code Online (Sandbox Code Playgroud)
我得到的输出
A
dog
is
an
animal.
Animals
are
not
people.
Run Code Online (Sandbox Code Playgroud)
预期的输出
a
dog
is
an
animal
animals
are
not
people
Run Code Online (Sandbox Code Playgroud)
n00*_*gon 42
问题是您的更改未被存储,因为字符串是不可变的.每个方法调用都返回一个String表示更改的new ,当前String保持不变.您只需将返回的内容存储String到数组中即可.
line[i] = line[i].replaceAll("[^a-zA-Z]", "");
line[i] = line[i].toLowerCase();
Run Code Online (Sandbox Code Playgroud)
因为每个方法都返回一个,所以String你可以将方法调用链接在一起.这将对第一个结果执行第二个方法调用,允许您在一行中执行这两个操作.
line[i] = line[i].replaceAll("[^a-zA-Z]", "").toLowerCase();
Run Code Online (Sandbox Code Playgroud)
您需要将正则表达式的结果分配回行[i].
for ( int i = 0; i < line.length; i++) {
line[i] = line[i].replaceAll("[^a-zA-Z]", "").toLowerCase();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78113 次 |
| 最近记录: |