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

  • 相关阅读:
    警惕:利用Dropbox链接散播的恶意软件
    repo的小结
    【网络协议】TCP的拥塞控制机制
    具体总结 Hive VS 传统关系型数据库
    站点防止攻击
    Java凝视Override、Deprecated、SuppressWarnings具体解释
    括号配对问题
    java的System.getProperty()方法能够获取的值
    HTTP协议是无状态协议,怎么理解?
    C++
  • 原文地址:https://www.cnblogs.com/-SSY-/p/3850368.html
Copyright © 2011-2022 走看看