原文:http://www.cnblogs.com/shuaisam/archive/2012/04/12/2442741.html
- js中字符串的替换
var str = "男的女的老的少的"; alert(str.replace('的',''));
可以看到替换后的str的值为"男女的老的少的",replace(str1,str2)方法替换的只是第一个匹配的字符串,那么如何实现替换全部匹配的字符串呢?
在java语言中有给出的replaceAll方法能够实现这样的功能,但很遗憾javascript没有提供这样的方法,但replace方法要比我们想象的强大,实际上通过它我们可以实现我们的需求的。
给出replace的语法定义
stringObj.replace(rgExp, replaceText)
其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。
第一个例子是参数rgExp 为字符串的情况,下面我们用正则表达式实现全部替换的功能
var str = "男的女的老的少的"; alert(str.replace(new RegExp(/(的)/g),''));
以上实现了字符串的全部替换,但这种正则表达式是有局限的,匹配的是一些特定的字符串,如何匹配动态的字符串呢?
var replaceStr = "的"; alert(str.replace(new RegExp(replaceStr,'gm'),''));
这样我们就完成了匹配字符串的动态赋值。
另外还有其他的方法实现全部替换
alert(str.split(replaceStr).join(''));
网上查到一种方法,感觉不可取
function ReplaceAll(str, sptr, sptr1){ while (str.indexOf(sptr) >= 0){ str = str.replace(sptr, sptr1); } return str; }
调用这个方法执行以下代码的话,会陷入死循环的
var ss = 'abc'; alert(ReplaceAll(ss,'b','bc'));
相关推荐
主要介绍了JavaScript使用replace函数替换字符串的方法,涉及javascript中replace函数的使用技巧,非常具有实用价值,需要的朋友可以参考下
该字符串不会被 replace 方法修改。 rgExp 必选项。为包含正则表达式模式或可用标志的正则表达式对象。也可以是 String 对象或文字。如果 rgExp 不是正则表达式对象,它将被转换为字符串,并进行精确的查找;不要...
由于javascript中的replace函数无法替换全部匹配的字符串,所以需要为String类增加一个方法,代码如下: 代码如下: String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) { if (!RegExp...
JS 字符串有replace() 方法,但是没有提供replaceAll这样的方法,使用正则可以达成Replace的效果
cutstr.js 字符串长度截取 replaceAll.js 替换全部 trim.js 清除空格 startWith.js 判断是否以某个字符串开头 endWith.js 判断是否以某个字符串结束 HtmlEncode.js 转义html标签 dateFormat.js 时间日期格式转换 ...
代码如下: /** * 替换字符串中所有 * @param obj 原字符串 * @param str1 替换规则 * @param str2 替换成什么 * @return 替换后的字符串 */ function replaceAll(obj,str1,str2){ var result = obj.replace(eval(...
Java中的replaceAll()方法怎么才能同时替换多个不同的字符串呢? 正好我遇到过这个情况,就跟她分享了一下心得,解决问题后的她开心的像刚充完气儿一样。 这让我颇感欣慰,在这里我也分享给大家。 需求场景 场景1: ...
目的是要实现一个非常快速的字符串替换功能,而不会出现基于RegExp的String.replace() 。 解决此问题的常用方法是不查找要查找的内容和要替换的内容,因为两者都处理特殊字符。 这种解决方案称为replaceAll()。 ...
与字符串参数一起使用时, String.prototype.replace仅影响首次出现。 有很多证据表明开发人员正在尝试使用JS进行此操作-请参阅具有成千上万票的。 当前,最常见的实现方法是使用全局正则表达式。 const ...
苏蒂尔斯 ... // => "baa" ,它仅替换了指定的子字符串之一。 executeTemplateLiteral(string: string, args: any[], argNames: string[], replace$: boolean = false) executeTemplateLiteral ( "test ${
// 重复字符串 String.prototype.repeat = function(n) { return new Array(n+1).join(this); } // 替换全部 String.prototype.replaceAll = function(str1, str2) { return this.replace(new RegExp(str1, "gm"),...