首页 / Javascript / 正文

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

1569 发布于: 2019-07-23 读完约需5分钟

问题描述

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中如何验证一个字符串是否为正确的电子邮箱格式?

下一篇: # 使用 MiniProfiler 来分析 ASP.NET Core 应用

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

分享扩散:

发表评论

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