如何替换字符串的子字符串

时间:2013-05-22 22:03:28

标签: java string substring

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

"abcd=0; efgh=1"

我希望用“dddd”替换“abcd”。我试图做这样的事情:

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

它不起作用。有什么建议?

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

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

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

7 个答案:

答案 0 :(得分:68)

您需要使用replaceAll()方法的返回值。 replaceAll()不替换当前字符串中的字符,它返回一个带替换字符的新字符串。

  
      
  • 字符串对象是不可变的,它们的值在创建后无法更改。
  •   
  • 如果您不需要正则表达式,可以使用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

答案 1 :(得分:13)

你应该注意两件事:

  1. Java中的字符串是不可变的,因此您需要将whereplace方法调用的返回值存储在另一个String中。
  2. 这里你真的不需要正则表达式,只需简单地调用String#replace(String)即可。
  3. 所以只需使用此代码:

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

答案 2 :(得分:12)

您需要创建变量以将新值分配给,如下所示:

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

答案 3 :(得分:4)

通过正则表达式我认为这是java,方法replaceAll()返回一个替换了子字符串的新String,所以试试这个:

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

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

System.out.println(teste2);

输出:

dddd=0; efgh=1

答案 4 :(得分:3)

  

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

来自javadoc

答案 5 :(得分:0)

在javascript中:

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

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

答案 6 :(得分:0)

您可能在更换或更换错误的东西后没有分配它。 试试:

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