string不能replace字符

我有一个作为string传入的句子,我正在replace单词“和”,我想用“”replace它。 它并不是用空格replace“and”。 下面是我的逻辑的一个例子。 而当我debugging这个逻辑确实落入了句子。

String sentence = "Define, Measure, Analyze, Design and Verify" if (sentence.contains("and")){ sentence.replace("and", " "); } 

有什么我在这里失踪。

而当我debugging这个逻辑确实落入了句子。

是的,然后你放弃返回值。

Java中的string是不可变的 – 当你调用replace ,它不会改变现有string的内容 – 它会返回一个带有修改的string。 所以你要:

 sentence = sentence.replace("and", " "); 

这适用于String( substringtoLowerCase等)中的所有方法。 他们都没有改变string的内容。

请注意,您并不需要在条件中这样做 – 毕竟,如果句子包含"and" ,则执行replace并不会造成任何损害:

 String sentence = "Define, Measure, Analyze, Design and Verify"; sentence = sentence.replace("and", " "); 

string是不可改变的 ,这意味着它们的内容不能改变。 当你调用replace(this,that)你会得到一个全新的String。 如果你想保留这个新的副本,你需要把它分配给一个variables。 您可以覆盖旧的参考( sentence = sentence.replace(this,that)或新的参考,如下所示:

 public class Test{ public static void main(String[] args) { String sentence = "Define, Measure, Analyze, Design and Verify"; String replaced = sentence.replace("and", ""); System.out.println(replaced); } } 

另外,请注意,我已经删除了contains()检查,因为这是一个不必要的调用。 如果它不包含它,replace将不能做任何replace。 如果您要更换的内容与您检查的实际情况不同,则只需要包含该方法。

你没有做任何与replace的返回值。 你需要分配方法的结果,这是新的String

 sentence = sentence.replace("and", " "); 

一个String在Java中是不可变的。 像replace这样的方法返回一个新的String

你的containstesting是不必要的:如果没有要replace的文本实例, replace将只是没有操作。

您应该重新分配replace的结果,如下所示:

  sentence = sentence.replace("and", " "); 

请注意, String类是不可变的 ,这意味着它的所有方法都会返回一个新的string,并且不会原地修改原始string,所以在String实例中调用方法的结果必须分配给variables或立即使用以使更改生效。