如何替换字符串的子字符串[重复]

Posted

技术标签:

【中文标题】如何替换字符串的子字符串[重复]【英文标题】:How to replace a substring of a string [duplicate] 【发布时间】:2013-05-18 03:07:09 【问题描述】:

假设我有一个这样的字符串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();
      

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

【问题讨论】:

你能比“它不起作用”更具体吗?首先,这是什么语言?你有错误吗?会不会发生意想不到的事情?您一般要完成什么? 【参考方案1】:

您需要使用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("\\(\\)", "");【参考方案2】:

你应该注意的两件事:

    Java 中的字符串是不可变的,因此您需要将 replace 方法调用的返回值存储在另一个字符串中。 您实际上并不需要正则表达式,只需简单地调用 String#replace(String) 即可。

所以只需使用以下代码:

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

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

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

System.out.println(teste2);

输出:

dddd=0; efgh=1

【讨论】:

【参考方案5】:

注意替换中的反斜杠 (\) 和美元符号 ($) 字符串可能会导致结果与之前的结果不同 视为文字替换字符串;看 Matcher.replaceAll。 采用 Matcher.quoteReplacement(java.lang.String) 如果需要,可以隐藏这些字符的特殊含义。

来自javadoc。

【讨论】:

【参考方案6】:

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

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

【讨论】:

【参考方案7】:

javascript中:

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

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

【讨论】:

以上是关于如何替换字符串的子字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

用其他列值pyspark替换包含美元符号($)的子字符串[重复]

如何在JAVA中用不同的子字符串替换字符串的子字符串?

替换字符串中第 n 次出现的子字符串

如何在 Netezza 中替换完整的子字符串

如何在特定字符之前替换字符串的子字符串?

如何替换mongodb文档中的子字符串