js replace()方法如何替换变量

如果我们想把一段字符串里的某个字符串替换成另一个字符串就可以用replace()这个方法
比如我们要把"我们去吃饭吧,你吃饭了吗"这句话中的"吃饭"两个字替换成"喝酒"

<script>
    var str = '我们去吃饭吧,你吃饭了吗';
    str1 = str.replace('吃饭','喝酒');
    console.log(str1);//结果是:我们去喝酒吧,你吃饭了吗
</script>

如果用上面这种方法,只能替换掉第一个匹配的字符串。
如果要替换掉所有匹配的字符串,可以用正则表达式。

<script>
        var str = '我们去吃饭吧,你吃饭了吗';
    str2 = str.replace(/吃饭/g,'喝酒');
    console.log(str2);//结果是:我们去喝酒吧,你喝酒了吗
</script>

但是,如果我们要替换的是一个变量,像上面那样在正则表达式里加入变量可以吗?

<script>
    var str = '我们去吃饭吧,你吃饭了吗';
    var key = '吃饭';
    str3 = str.replace(/key/g,'喝酒');//这样是不行的,key会被当成字符串
</script>

我们发现直接在正则表达式里放入变量是不行的,变量会被当成字符串来处理。
那么如何才能替换变量呢?可以利用js的RegExp对象对字符串执行模式匹配

<script>
    var str = '我们去吃饭吧,你吃饭了吗';
    var key = '吃饭';//如果要替换的是一个变量
    str3 = str.replace(new RegExp(key,'g'),'喝酒');
    console.log(str3);//结果是:我们去喝酒吧,你喝酒了吗
</script>

这样就可以把一段字符串里的某个字符串全部替换成另一个字符串了,非常的方便。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: