你好我有一个字符串,当我尝试在for循环中使用replace方法时它不起作用
String phrase="hello friend";
String[] wordds=phrase.split(" ");
String newPhrase="sup friendhello weirdo";
for (int g=0;g<2;g++)
{
finalPhrase+=newPhrase.replace(wordds[g],"");
}
System.out.println(finalPhrase);
打印出sup hello weirdo
,我希望它能打印sup weirdo
。
我做错了什么?
答案 0 :(得分:5)
让我们一起调试。
wordds = ["hello", "friend"]
。
newPhrase = "sup friendhello weirdo"
。
然后,您正在从g
到0
的某些1
上运行(应该是0
到wordds.length
。
newPhrase.replace(wordds[g],"");
确实会根据您的需要进行替换,但是当您调试程序时,您会注意到您使用的是+=
而不是:
newPhrase=newPhrase.replace(wordds[g],"");
终身提示:使用调试器,它可以帮助您。
答案 1 :(得分:4)
试试这个:
String phrase = "hello friend";
String[] wordds = phrase.split(" ");
String newPhrase = "sup friendhello weirdo";
for (int g = 0; g < 2 ; g++) {
newPhrase = newPhrase.replace(wordds[g], "");
}
System.out.println(newPhrase);
=============================================== ====
<强>更新强>
您需要纠正的一些事情
当您尝试替换句子中的特定单词时,需要删除concat oprator(+)。只需在替换
每次进入循环时,您将获取初始声明的字符串,而不是每次都需要使用更新的字符串
答案 2 :(得分:1)
你在做什么,是将被替换的短语附加到另一个
newPhrase = newPhrase.replace(wordds[g],"");
答案 3 :(得分:1)
除了立即修复的建议外,您还可以考虑使用基于正则表达式的解决方案,没有循环:
String phrase="hello friend";
String regex=phrase.replace(' ', '|');
String newPhrase="sup friendhello weirdo";
String finalPhrase=newPhrase.replaceAll(regex,"");
System.out.println(finalPhrase);
或者,更简洁:
System.out.println("sup friendhello weirdo"
.replaceAll("hello friend".replace(' ','|'),
""));
答案 4 :(得分:0)
这应该可以解决问题:
String phrase="hello friend";
String[] wordds=phrase.split(" ");
String newPhrase="sup friendhello weirdo";
String finalPhrase=newPhrase;
for (int g=0;g<wordds.length;g++)
{
finalPhrase=finalPhrase.replace(wordds[g],"");
}
System.out.println(finalPhrase);
首先,将finalPhrase指定给newPhrase。然后你迭代所有分裂的单词(我已经将你的魔法常量2
改为分词wordds.length
的数量。每个单词都将被替换为finalPhrase字符串。结果字符串看起来像{{1} (单词之间有两个空格)。
您可以使用answer from here:
清理多余的空格sup weirdo