Javascript - 如何替换子字符串?

时间:2008-10-31 09:06:25

标签: javascript regex

这很简单。我想使用Javascript在客户端用另一个子字符串替换子字符串。

原始字符串为'original READ ONLY'

我想将'READ ONLY'替换为'READ WRITE'

请快点回答?可能有一个javascript代码片段......

4 个答案:

答案 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>