这很简单。我想使用Javascript在客户端用另一个子字符串替换子字符串。
原始字符串为'original READ ONLY'
我想将'READ ONLY'
替换为'READ WRITE'
请快点回答?可能有一个javascript代码片段......
答案 0 :(得分:25)
String.replace()
是基于正则表达式的;如果传入一个字符串作为第一个参数,则由它生成的正则表达式将不包含'g'(全局)标志。如果要替换搜索字符串的所有出现(通常是您想要的),此选项是必不可少的。
简单全局字符串替换的替代非正则表达式习惯用语是:
function string_replace(haystack, find, sub) {
return haystack.split(find).join(sub);
}
在find
字符串可能包含在regexp中具有不需要的特殊含义的字符时,这是首选。
无论如何,问题中的任何一种方法都可以。
答案 1 :(得分:12)
好summary。它是基于regexp的,如果使用regexp表示法,你可以指定i和g修饰符(不区分大小写(i),它将匹配case和global(g),它将替换所有出现),如果你使用字符串表示法它将转换为正则表达式,您将无法指定任何修饰符。
<script type="text/javascript">
var str1="Visit Microsoft!";
var str2 = str1.replace(/microsoft/i, "W3Schools"); //Will work, per the i modifier
var str3 = "original READ ONLY";
var str4 = str3.replace("ONLY", "WRITE"); //Will also work
</script>
答案 2 :(得分:3)
stringObject.replace(findstring,newstring)
答案 3 :(得分:2)
我更喜欢正则表达式方法,
newstring = oldstring.replace(/ regexforstringtoreplace /,'new string');
它也值得考虑g和i正则表达式修饰符,它们做全局替换(即替换所有出现)并使其不区分大小写。
例如:
<script type="text/javascript">
var str = "this is a String";
document.write(str.replace(/\s/g, "_"));
would print: this_is_a_string
document.write(str.replace(/s/gi, "f"));
would print "thif if a ftring"
</script>