zoukankan      html  css  js  c++  java
  • js 实现ReplaceAll 的方法

    JS  字符串有replace() 方法。但这个方法只会对匹配到的第一个字串替换。 如下例:

    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    </HEAD>
    
    <BODY>
    <script>
       var str = "wordwordwordword";
       var strNew = str.replace("word","Excel");
       alert(strNew);
    </script>
    </BODY>
    </HTML>

    如果要全部替换的话,JS 没有提供replaceAll这样的方法。使用正则表可以达成Replace 的效果:

    str.replace(/word/g,"Excel")

    g 的意义是:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

    <HEAD>
    <TITLE> New Document </TITLE>
    <script>
    function replaceAll(str)
    {
        if(str!=null)
        str = str.replace(/word/g,"Excel")
        return str;
    }
    </script>
    </HEAD>
    
    <BODY>
    <script>
       var str = "wordwordwordword";
       var strNew = str.replace("word","Excel");
       strNew = replaceAll(str);
       alert(strNew);
    </script>
    </BODY>
    </HTML>

    以上写法有个类同的写法:

    str.replace(new RegExp("word","gm"),"Excel")

    g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

    m 执行多行匹配。

    除此之外,也可以添加 Stirng对象的原型方法:

    String.prototype.replaceAll  = function(s1,s2){   
        return this.replace(new RegExp(s1,"gm"),s2);   
    } 

    这样就可以像使用replace 方法一样使用replaceAll了

    str.replaceAll("word","Excel");

    总结一下, 三种方式

    1.  str.replace(/oldString/g,newString)

    2.  str.replace(new RegExp(oldString,"gm"),newString)

    3. 增加String 对象原型方法 replaceAll

  • 相关阅读:
    Windows 下安装 Python环境安装
    关于form表单提交ajaxForm和ajaxSubmit的用法与区别
    .NET Core Runtime 和 .NET Core SDK
    路由表中没有与提供的值匹配的路由
    SQL server Cannot find one or more
    CentOS7安装完毕,重新开机启动后显示: Initial setup of CentOS Linux 7 (core)
    private static
    接口和抽象类
    static const readonly
    frameset的使用小结
  • 原文地址:https://www.cnblogs.com/-SSY-/p/3850368.html
Copyright © 2011-2022 走看看