如何替换字符串中的子串

62

假设我有一个像这样的字符串 string

"abcd=0; efgh=1"

我想将“abcd”替换为“dddd”。我已经尝试过这样的操作:

string.replaceAll("abcd","dddd");

它不起作用,有什么建议吗?

编辑: 为了更具体,我正在使用Java,并尝试解析HTML文档,具体而言是<script>标记之间的内容。 我已经找到了一种将此内容解析为字符串的方法:

 if(tag instanceof ScriptTag){
        if(((ScriptTag) tag).getStringText().contains("DataVideo")){
            String tagText = ((ScriptTag)tag).getStringText();
      }
}

现在我必须找到一种方法,如何用另一个字符串替换一个子字符串。


3
“它不起作用”这个描述可以更加具体些吗?首先,这是什么语言?你是否遇到了错误?是否发生了意外情况?你总体上想要达到什么目标? - Explosion Pills
6个回答

86

您需要使用replaceAll()方法的返回值。 replaceAll()不会更改当前字符串中的字符,而是返回一个替换后的新字符串。

  • String对象是不可变的,它们的值在创建后无法更改。
  • 如果您不需要正则表达式,则可以使用replace()代替replaceAll()。
    String str = "abcd=0; efgh=1";
    String replacedStr = str.replaceAll("abcd", "dddd");

    System.out.println(str);
    System.out.println(replacedStr);

输出

abcd=0; efgh=1
dddd=0; efgh=1

注意replaceAll方法需要一个正则表达式。替换空括号"()"将会产生正则表达式错误,直到你进行正确的转义:str.replaceAll("\(\)", ""); - HoldOffHunger

17

需要注意两点:

  1. Java 中的字符串是不可变的,因此您需要将 thereplace 方法调用的返回值存储在另一个字符串中。
  2. 这里实际上不需要正则表达式,只需简单调用 String#replace(String) 就可以完成工作。

因此,只需使用此代码:

String replaced = string.replace("abcd", "dddd");

13
您需要创建一个变量来分配新值,像这样:

您需要创建一个变量来分配新值,像这样:

String str = string.replaceAll("abcd","dddd");

9

根据正则表达式,我认为这是Java语言,方法replaceAll()返回一个新的字符串,其中包含替换后的子字符串,因此请尝试以下内容:

String teste = "abcd=0; efgh=1";

String teste2 = teste.replaceAll("abcd", "dddd");

System.out.println(teste2);

输出:

dddd=0; efgh=1

4

0

你可能在替换后没有进行赋值,或者替换了错误的内容。 尝试:

String haystack = "abcd=0; efgh=1";
String result = haystack.replaceAll("abcd","dddd");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接