首页 / 问答 / JavaScript(js)如何替换字符串中出现的所有子字符串呢?

JavaScript(js)如何替换字符串中出现的所有子字符串呢?

javascript js 字符串 1.34K 次浏览
0

在JavaScript(js)前端开发中,假如有如下的字符串:

var str = "Test abc test test abc test test test abc test test abc";

现在需要使用replace()函数替换掉字符串str中所有出现的abc子字符串,如下:

str = str.replace('abc', '');

似乎只替换了上面字符串str中第一个出现的abc。那么,如何替换掉字符串str中所有出现的abc子字符串呢?

回复 [×]
提交评论
请输入评论内容

3 个回答

  • 0

    对于老旧的浏览器,可以在replace()函数的搜索字符串参数中加上/g,示例如下:

    str = str.replace(/abc/g, '');
    

    或者,使用RegExp()对象,如下:

    var find = 'abc';
    var re = new RegExp(find, 'g');
    
    str = str.replace(re, '');
    

    或者,创建一个替换所有出现的字符串的函数,如下:

    function replaceAll(str, find, replace) {
      return str.replace(new RegExp(find, 'g'), replace);
    }
    

    如果需要考虑特殊字符串的话,则要对 特殊字符串进行转义,函数如下:

    function escapeRegExp(string) {
      return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&');
    }
    

    那么,以上的replaceAll()函数可以重写成如下方式:

    function replaceAll(str, find, replace) {
      return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
    }
    
    Rector的个人主页

    Rector

    2021-11-06 回答

    • 0

      以下是在String类型的原型上使用RexExp实现的replaceAll方法:

      String.prototype.replaceAll = function(search, replacement) {
          var target = this;
          return target.replace(new RegExp(search, 'g'), replacement);
      };
      

      以下是使用SplitJoin函数实现的replaceAll原型方法:

      String.prototype.replaceAll = function(search, replacement) {
          var target = this;
          return target.split(search).join(replacement);
      };
      
      Rector的个人主页

      Rector

      2021-11-06 回答

      • 0

        以下是对特殊字符进行转义的替换字符串的原型方法:

        String.prototype.replaceAll = function (find, replace) {
            var str = this;
            return str.replace(new RegExp(find.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'), replace);
        };
        
        Rector的个人主页

        Rector

        2021-11-06 回答

        我来回答