假设我有一个像这样的字符串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();
}
}
现在我必须找到一种方法如何用另一个子串替换一个子串。
答案 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)
你应该注意两件事:
String#replace(String)
即可。所以只需使用此代码:
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");