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

    js本来有replace方法,请看w3school的说明:

      replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

    语法:

      stringObject.replace(regexp/substr,replacement)

      第一个参数为一个字符串或者一个正则表达式,第二个参数为一个字符串或者一个用于生成字符串的函数。

    注意重点:

      如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

    实例:

    var str = "dogdogdog";
    var str2 = str.replace("dog","cat");
    console.log(str2);

    这里仅替换第一个dog字符串,输出为:catdogdog。

    js中是没有replaceAll方法的,那么如何实现替换所有匹配的字符串呢,即在js中实现replaceAll方法:

    1. 使用具有全局标志g的正则表达式

    var str = "dogdogdog";
    var str2 = str.replace(/dog/g,"cat");
    console.log(str2);

    实现替换全部匹配字符串,输出结果为:catcatcat。

    2. 使用另一种具有全局标志g的正则表达式的定义方法

    var str = "dogdogdog";
    var str2 = str.replace(new RegExp("dog","gm"),"cat");
    console.log(str2);

    输出结果同上例。这里g表示执行全局匹配,m表示执行多次匹配。

    3. 给string对象添加原型方法replaceAll()

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

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

    var str = "dogdogdog";
    var str2 = str.replaceAll("dog", "cat");
    console.log(str2);

    输出结果同上例。
    个人推荐使用第3种方法。

  • 相关阅读:
    详解 final 和 static
    详解 方法的覆盖 —— toString() 与 equals()的覆盖
    详解 继承(上)—— 工具的抽象与分层
    详解 继承(下)—— super关键字 与 多态
    Java 基础讲解
    矩阵 的实现
    C语言 贪吃蛇
    巨大数——三则运算(+、-、*)
    浅谈 循环数组
    人体对电流的反应
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/11609088.html
Copyright © 2011-2022 走看看