0

您好,我有一个字符串,当我尝试在 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

我究竟做错了什么?

4

5 回答 5

5

一起调试吧。

wordds = ["hello", "friend"].

newPhrase = "sup friendhello weirdo".

然后你正在运行一些gfrom 0to 1(应该是 from 0to wordds.length.

newPhrase.replace(wordds[g],"");确实会根据需要替换,但是当您调试程序时,您会注意到您正在使用+=而不是:

newPhrase=newPhrase.replace(wordds[g],"");

生活提示:使用调试器,它可以帮助您。

于 2013-11-03T15:59:44.800 回答
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);

==================================================== =

更新

您需要纠正的几件事

  1. 当您尝试替换句子中的特定单词时,您需要删除 concat oprator (+)。替换后赋值即可

  2. 每次进入循环时,您都使用初始声明的字符串,而不是您需要使用每次都更新的字符串

于 2013-11-03T16:00:39.260 回答
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(' ','|'), 
                               ""));
于 2013-11-03T16:04:48.967 回答
1

你在做什么,是继续将替换的短语附加到另一个短语

newPhrase = newPhrase.replace(wordds[g],"");
于 2013-11-03T15:58:09.450 回答
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 字符串中被替换。生成的字符串看起来像sup weirdo(单词之间有两个空格)。

您可以使用此处的答案清理多余的空间:

System.out.println(finalPhrase.trim().replaceAll(" +", " "));
于 2013-11-03T16:03:26.597 回答