为了账号安全,请及时绑定邮箱和手机立即绑定

字符串不替换字符

字符串不替换字符

拉丁的传说 2019-06-03 13:55:05
字符串不替换字符我有一个句子是以字符串的形式传入的,我在“and”一词上做了一个替换,我想用“代替它。它不会用空格来代替“和”这个词。下面是我逻辑的一个例子。而当我调试这个逻辑时,这个逻辑就会落入Sentence.置换中。String sentence = "Define, Measure, Analyze, Design and Verify"if (sentence.contains("and")){     sentence.replace("and", " ");}这里有什么东西我遗漏了吗。
查看完整描述

4 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

而当我调试这个逻辑时,这个逻辑就会落入Sentence.置换中。

是的,然后放弃返回值。

Java中的字符串是不可变的-当您调用replace,它不会更改现有字符串-它返回新的有修改的字符串。所以你想:

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

这适用于字符串中的方法(substringtoLowerCase等等)其中更改字符串的内容。

请注意,您实际上不需要在某种情况下这样做-毕竟,如果是这样的话"and",执行替换操作是无害的:

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


查看完整回答
反对 回复 2019-06-03
?
湖上湖

TA贡献2003条经验 获得超2个赞

字符串是不变意味着它们的内容不能改变。当你打电话replace(this,that)你最终得到了一个全新的字符串。如果要保留此新副本,则需要将其赋值给一个变量。您可以覆盖旧的引用(A La)。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()检查一下,因为这是个不必要的呼叫。如果它不包含它,替换将无法进行任何替换。如果要替换的内容与正在检查的实际情况不同,则只需要包含该方法。


查看完整回答
反对 回复 2019-06-03
?
杨魅力

TA贡献1811条经验 获得超6个赞

回值为replace..您需要分配方法的结果,这是新的String:

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

String在java中是不可变的。方法,如replace返回一个新的String.

你的contains试验是不必要的:replace如果有不是要替换的文本的实例。


查看完整回答
反对 回复 2019-06-03
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

您应该重新分配替换结果,如下所示:

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

请注意,String类是不变,意思是的方法返回一个新字符串,并且从不修改原来的字符串,因此调用String必须分配给变量或立即使用更改才能生效。


查看完整回答
反对 回复 2019-06-03
  • 4 回答
  • 0 关注
  • 441 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信