如何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件事你应该注意:
- Java中的string是不可变的,因此您需要将另一个String中的thereplace方法调用的返回值存储。
- 在这里你不需要一个正则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");