如何replace一个string的子串

假设我有这样的stringstring

 "abcd=0; efgh=1" 

我想用“dddd”replace“abcd”。 我曾试图做这样的事情:

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

这是行不通的。 有什么build议么?

编辑:更具体地说,我在Java中工作,我试图parsingHTML文档,具体是<script>标签之间的内容。 我已经find了一个如何parsing这个内容到一个string的方法:

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

现在我必须find一种方法来replace另一个子string。

你需要使用replaceAll()方法的返回值。 replaceAll()不会replace当前string中的字符,它会返回一个新的replacestring。

  • string对象是不可变的,它们的值在创build后不能被改变。
  • 如果你不需要regex,你可以使用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 

2件事你应该注意:

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

所以只需使用这个代码:

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

您需要创buildvariables来分配新值,如下所示:

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

通过正则expression式我认为这是java,方法replaceAll()返回一个新的stringreplace的子string,所以试试这个:

 String teste = "abcd=0; efgh=1"; String teste2 = teste.replaceAll("abcd", "dddd"); System.out.println(teste2); 

输出:

 dddd=0; efgh=1 

请注意replacestring中的反斜杠(\)和美元符号($)可能会导致结果与被视为字面replacestring的结果不同。 看Matcher.replaceAll。 如果需要,可以使用java.util.regex.Matcher.quoteReplacement来抑制这些字符的特殊含义。

从javadoc。

在javascript中:

 var str = "abcdaaaaaabcdaabbccddabcd"; document.write(str.replace(/(abcd)/g,"----")); //example output: ----aaaaa----aabbccdd---- 

在其他语言中,它会是类似的东西。 请记住启用全局匹配。

在更换或更换错误的东西之后,您可能不会分配它。 试试:

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