js 字符串的replace() 方法和实现replaceAll() 方法

一、js中字符串的替换使用replace() 方法,但它只替换第一个匹配子串。如下例:

<script type="text/javascript">
        var sourceString = "我是被替换的字符串,是被替换的哦";
        var replaceString = sourceString.replace("替换", "replace");
        alert(replaceString);  // 我是被replace的字符串,是被替换的哦
</script>

可以看到替换后的replaceString的值为"我是被replace的字符串,是被替换的哦 ",replace(searchValue,replaceValue)方法替换的只是第一个匹配的字符串,那么如何实现替换全部匹配的字符串呢?——可以使用replace(searchRegexp,replaceValue)的正则表达式方式来实现。

<script type="text/javascript">
        var sourceString = "我是被替换的字符串,是被替换的哦";
        var replaceString = sourceString.replace(/替换/gm, "replace"); //sourceString.replace(new RegExp("替换", "gm"), "replace");
        alert(replaceString);   // 我是被replace的字符串,是被replace的哦
</script>

二、添加 Stirng对象的原型方法:实现replaceAll()方法

<script type="text/javascript">
        // 替换所有
        String.prototype.replaceAll = function (searchString, replaceString, ignoreCase) {
            if (RegExp.prototype.isPrototypeOf(searchString)) {
                return this.replace(searchString, replaceString);
            } else {
                return this.replace(new RegExp(searchString, (ignoreCase ? "gmi" : "gm")), replaceString);
            }
        }

        var sourceString = "我是被替换的字符串,是被替换的哦,Is Replace or replace?";
        var replaceString = sourceString.replaceAll("替换", "replace");
        //replaceString = sourceString.replaceAll(/替换/gm, "replace");
        //replaceString = sourceString.replaceAll(new RegExp("替换", "gm"), "replace");
        //replaceString = sourceString.replaceAll("replace", "替换");  // 我是被替换的字符串,是被替换的哦,Is Replace or 替换?
        //replaceString = sourceString.replaceAll("replace", "替换", true);  // 我是被替换的字符串,是被替换的哦,Is 替换 or 替换?
        console.log(replaceString);
        alert(replaceString);   // 我是被replace的字符串,是被replace的哦,Is Replace or replace?
</script>
时间: 2025-01-05 22:57:58

js 字符串的replace() 方法和实现replaceAll() 方法的相关文章

js字符串替换(replace)

记录一个开发中所犯的错误. 需求:用js将字符串中的某些子字符串替换为指定的新字符串. 实现思路:印象中js字符串替换有replace方法,replace方法接收两个参数,第一个为要替换的子字符串或正则匹配模式,第二个参数为新字符串.自己对正则不熟,认为用字符串能满足需求. 简单测试 var str="apples are round"; var newStr = str.replace('apples','oranges') //newStr 值为:oranges are round

js 字符串转换成数字的三种方法

在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形式的.在网上找了一下js字符串转数字的文章,这个比较全 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才

js 字符串转换成数字的三种方法--转

在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形式的.在网上找了一下js字符串转数字的文章,这个比较全 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才

js字符串转成数字的三种方法

js读取的html代码中获得的值 ,统统是以字符串的形式呈现的,为了方便我们后面对数据的操作,有时候我们有必要进行转换一下. 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行:对其他类型返回的都是NaN(Not a Number). 一些示例如下: 代码如下:parseInt("1234blu

js字符串 数字 的转换

js 字符串转化成数字 的 三种方法主要有 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行:对其他类型返回的都是NaN(Not a Number). 一些示例如下: parseInt("1234blue"); //returns 1234parseInt("0xA"); //r

js字符串方法、数组方法整理

push 向数组末尾添加一项 返回值为数组的长度: pop 删除数组最后一项: unshift 向数组开头增加一项: shift 删除数组第一项: splice 删除数组中的值:1 splice(n,m)从n开始 删除m个:返回下标n~m : 2 splic(n) 从n开始删除到末尾: 3 splice(n,m,x)从n开始删除m个,用x替换: 4 splice(n,0,m) 把x增加到n前面: 5 splice(arr.length,0,n) 向末尾加n 数组的截取和拼接 slice(n,m)

js字符串常用属性和方法

字符串声明: var str1 = new String(“abcdefgabc”);      //这是一个“字符串对象” var str2 = “abcdefgabc”;                            //这个字符串跟前面str1几乎没有区别 str.length——获得一个字符串的长度(也就是字符个数) 字符串对象的方法: str1.charAt( n );       ——获得字符串str1中位置为n的那个字符(字符的位置也是从0开始算起)var s1 = str

从js的repeat方法谈js字符串与数组的扩展方法

js将字符串重复N次的repeat方法的8个版本 /* *@desc: 将一个字符串重复自身N次 */ //版本1:利用空数组的join方法 function repeat(target, n) { return (new Array(n + 1)).join(target); } //版本2:之所以要创建一个带length属性的对象 是因为要调用数据的原型方法,需要指定call的第一个参数为类数组对象 //类数组对象的必要条件是其length属性的值为非负数 function repeat(t

浅谈 js 字符串 trim 方法之正则篇

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流