如何用空字符串替换多个单词""在java的字符串中。我尝试使用for循环来替换单引号中的那些,然后在下面的数组中添加,但它会替换每个打印输出一个单词。
String str = "this house 'is' really 'big' and 'attractive'.";
String[] values={"is","big","attractive"};
for(String s: values){
String replaced = str.replace(s, "");
System.out.println( replaced );
}
我得到了这个输出:
> this house ' ' really 'big' and 'attractive'.
> this house 'is' really ' ' and 'attractive'.
> this house 'is' really 'big' and ' '.
我需要的是:
> this house ' ' really ' ' and ' '.
答案 0 :(得分:6)
System.out.println(str.replaceAll("is|big|attractive", ""));
答案 1 :(得分:1)
您重新开始原始String
的每次迭代,而您不会修改。
您可以更改String
引用的str
并使用它,如下所示:
for(String s: values){
str = str.replace(s, "");
System.out.println( str );
}
答案 2 :(得分:1)
为什么您的方法有误
Java中的字符串是不可变的 - 当您调用replace时,它不会更改现有字符串的内容 - 它会返回带有修改的新字符串。所以你想要:
str= str.replace(s, "");
代替String replaced = str.replace(s, "");
此外,在for循环之后编写此代码:System.out.println(str);
并省略System.out.println( replaced );
,因为它的位置现在位于for循环中,导致多个语句被打印。
请注意,完成所有这些操作后,代码将打印th house '' really '' and ''.
而不是所需的输出。
为什么要遵循Reimeus的回答或使用通用的正则表达式
即使在更正代码后,您也无法获得所需的结果,因此:)
答案 3 :(得分:0)
您在每次迭代中重新初始化replaced
。因此,您最终会得到一个字符串,其中只替换了数组values
的最后一个元素。
要获得所需的输出,请尝试以下方法:
String replaced = str;
for(String s: values){
replaced = replaced.replace(s, "");
}