如何替换字符串的子字符串[重复]
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----
在其他语言中,它会是类似的东西。记得启用全局匹配。
【讨论】:
以上是关于如何替换字符串的子字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章