当前位置: 首页 > 知识库问答 >
问题:

字符串替换方法不是替换字符

唐增
2023-03-14

我有一个作为字符串传入的句子,我正在对单词“and”进行替换,我想用“”替换它。它并没有用空白代替“和”。下面是我的逻辑示例。当我调试这个的时候,逻辑就落在句子里了。代替

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

这里有我遗漏的东西吗。

共有3个答案

傅安宁
2023-03-14

您没有使用replace的返回值执行任何操作。您需要分配该方法的结果,即新的字符串

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

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

您的contains测试是不必要的:replace如果没有要替换的文本实例,则将不会执行任何操作。

陆沈浪
2023-03-14

字符串是不可变的,这意味着它们的内容不能改变。当你调用替换(this, that)时,你会得到一个全新的String。如果您想保留这个新副本,您需要将其分配给一个变量。您可以覆盖旧的引用(a la语句=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()检查,因为这是一个不必要的调用。如果它没有包含它,则替换将无法进行任何替换。如果要替换的内容与要检查的实际情况不同,则只需要包含该方法。

闽阳州
2023-03-14

当我调试这个的时候,逻辑就落在句子里了。代替

是,然后丢弃返回值。

Java中的字符串是不可变的——当您调用替换时,它不会改变现有字符串的内容——它返回一个带有修改的新字符串。所以你想要:

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

这适用于String中的所有方法(substringtoLowerCaseetc)。它们都不会更改字符串的内容。

请注意,您实际上不需要在某个条件下执行此操作-毕竟,如果句子中不包含和“”,则执行替换操作没有坏处:

String sentence = "Define, Measure, Analyze, Design and Verify";
sentence = sentence.replace("and", " ");
 类似资料:
  • 问题内容: 我有一个以字符串形式传递的句子,我正在对单词“ and”进行替换,我想用“”替换它。而且它不是用空格替换“和”一词。以下是我的逻辑示例。而当我调试此逻辑时,逻辑确实落入了句子。 这里有我想念的东西吗? 问题答案: 而当我调试此逻辑时,逻辑确实落入了句子。 是的,然后你放弃返回值。 Java中的字符串是不可变的-当你调用时,它不会更改现有字符串的内容-它会返回经过修改的新字符串。所以你要

  • 问题内容: 我希望将文本“REPLACEME”替换为我的StringBuffer符号。当我打印符号时,它是一个有效的字符串。当我打印查询时,它仍然具有文本REPLACEME而不是符号。为什么? 问题答案: 更改 至: Java中的字符串被设计为不可变的。 这就是为什么不能替换当前字符串 中 的字符,因此它必须返回替换了字符的 新 字符串。 此外,如果你想简单地替换文字,不需要正则表达式的语法支持使

  • 问题内容: 假设我的格式如下: 我想将小数点替换为空白,使其看起来像这样: 我该怎么做呢?我以为可以解决问题,但是当我尝试这样时: 我收到了一个错误消息,因为它可能不是字符。那是有道理的,那么我还能怎么完成我想要的? 问题答案: 如果您只是将单引号换成双引号,那么这将起作用,因为空字符串是合法值,而不是“空字符”,并且有重载。请记住,这是的超类型。

  • 问题内容: 我有一列包含网址(ID,网址)的列: 我想将“更新”一词更改为“新闻”。是否可以使用脚本执行此操作? 问题答案: 现在的行就像 将会 http://www.electrictoolbox.com/mysql-find-replace- text/

  • 问题 你需要用另一个值替换字符串的一部分。 解决方案 使用 JavaScript 的 replace 方法。它与给定字符串匹配,并返回已编辑的字符串。 第一个版本需要 2 个参数:模式和字符串替换 "JavaScript is my favorite!".replace /Java/, "Coffee" # => 'CoffeeScript is my favorite!' "foo bar b

  • 本文向大家介绍JS替换字符串中字符即替换全部而不是第一个,包括了JS替换字符串中字符即替换全部而不是第一个的使用技巧和注意事项,需要的朋友参考一下 有时候用JS替换字符串时,replyText= replyText.replace("aa",""); 这样只能替换掉字符串中第一个aa,有时候需要替换全部的aa,这种方法就不能使用了。。 可以用如下方法做参考: str是目标字符串 reallyDo是