[JavaScript]JavaScript中如何替换字符串中所有出现的全部子字符串?

Javascript 作者: Rector 18 次阅读 · 读完约需 1 分钟 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

JavaScript中,如何替换字符串中所有出现的全部子字符串?

比如有类似这样的字符串:

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

现需要将字符串str中所有出现的abc替换掉,应该如何操作呢?如果简单地使用replace()方法,只能替换掉字符串中第一个出现的子字符串,比如:

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

方案一

使用基于正则表达式的替换全部子字符串的实现方法,如下:

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

调用示例:

str = str.replaceAll("abc","");

方案二

基于split()join()函数实现的替换全部子字符串的实现方式,如下:

String.prototype.replaceAll = function(search, replacement) {
    var target = this;
    return target.split(search).join(replacement);
};

调用示例:

str = str.replaceAll("abc","");

方案三

使用while循环来替换,如下:

function replaceAll(find, replace, str) 
{
  while( str.indexOf(find) > -1)
  {
    str = str.replace(find, replace);
  }
  return str;
}

方案四

使用递归来替换字符串,如下:

replaceAll = function(string, omit, place, prevstring) {
  if (prevstring && string === prevstring)
    return string;
  prevstring = string.replace(omit, place);
  return replaceAll(prevstring, omit, place, string)
}

方案五

使用indexOf()substring()函数实现方式,如下:

function replaceAll(str, find, replace) {
  var i = str.indexOf(find);
  if (i > -1){
    str = str.replace(find, replace); 
    i = i + replace.length;
    var st2 = str.substring(i);
    if(st2.indexOf(find) > -1){
      str = str.substring(0,i) + replaceAll(st2, find, replace);
    }       
  }
  return str;
}

阅读了该文章的人还浏览了...

本文永久链接码友网 » [JavaScript]JavaScript中如何替换字符串中所有出现的全部子字符串?

发布于: 2019-07-23 17:48:56
分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册