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( substring
, toLowerCase
等)中的所有方法。 他们都没有改变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
。
你的contains
testing是不必要的:如果没有要replace的文本实例, replace
将只是没有操作。
您应该重新分配replace的结果,如下所示:
sentence = sentence.replace("and", " ");
请注意, String
类是不可变的 ,这意味着它的所有方法都会返回一个新的string,并且不会原地修改原始string,所以在String
实例中调用方法的结果必须分配给variables或立即使用以使更改生效。