问题描述
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;
}
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册