字符串String的slice、replace、toUpperCase和repeat等方法会不会改变原有字符串

------JavaScript中对于String对象有很多原生的属性和方法,非常的方便和实用,例如:length属性获取字符串的总长度;IndexOf()查找指定字符,返回位置索引等。
------我们还有一些方法是会改变我们的字符串模样,返回一个新的字符串,那么他们的一系列操作是否会改变原有字符串的样式呢?
------让我们一起来看看吧!

  1. 首先,测试一下字符串的截取方法slice、substr和substring
var str = "这里是一个字符串";
var newStr = str.slice(5),
    newStr2 = str.substring(3,1),
    newStr3 = str.substr(1,3);

console.log("原字符串---",str);
console.log("slice截取的字符串---",newStr);
console.log("substring截取的字符串---",newStr2);
console.log("substr截取的字符串---",newStr3);

输出结果
原字符串— 这里是一个字符串
slice截取的字符串— 字符串
substring截取的字符串— 里是
substr截取的字符串— 里是一

由此可以看出,字符串的截取方法并不会修改原有字符串,而只是返回了一个新字符串。

  1. 然后,再看一下replace方法
var str = "这里是一个字符串";
var newStr = str.replace("字符串","replace");

console.log("原字符串---",str);
console.log("replace修改后的字符串---",newStr);

输出结果
原字符串— 这里是一个字符串
replace修改后的字符串— 这里是一个replace

由此可以看出,字符串的replace方法并不会修改原有字符串,而只是返回了一个修改后的新字符串。

  1. 前面的两种方法,都不会对原有字符串造成影响,那么toUpperCase和toLowerCase呢
var demo = "Hello,world";
var NEW = demo.toUpperCase();
var new = demo.toLowerCase();

console.log(NEW); // 输出:HELLO,WORLD
console.log(new); // 输出:hello,world
console.log(demo);// 输出:Hello,world

可以看到,使用toUpperCase()方法后," hello,world "变为 " HELLO,WORLD "。假设如果会改变原字符串的话,此时demo应该全都变为大写,但是依然是原来最初定义的字符串,这足可以说明不会影响到原字符串。同理可得,toLowerCase()也不会改变原有字符串。

  1. 最后再来看一下ES6中新增的一些方法repeat,padStart和padEnd
        var str = "s";
        var newStr = str.repeat(10);

        console.log("原字符串---",str);
        console.log("repeat修改后的字符串---",newStr);

输出结果,并未改变原字符串
原字符串— s
repeat修改后的字符串— ssssssssss

var str = "s";
var newStr = str.padStart(3,"pa");

console.log("原字符串---",str);
console.log("padStart修改后的字符串---",newStr);

输出结果
原字符串— s
padStart修改后的字符串— pas

总结

由上面的小案例我们可以看出,字符串String的内置方法

  1. slice()、substr()和substring()
  2. replace()
  3. toUpperCase()和toLowerCase()
  4. ES6中新增的一些方法repeat(),padStart()和padEnd()

都不会修改原有字符串

猜你喜欢

转载自blog.csdn.net/m0_56026872/article/details/118436376