JavaScript字符串“三剑客”

简介: JavaScript字符串方法有很多,其中有三个方法与字符串裁剪有关,他们分别是slice()、substring()和substr(),我把他们统称为“三剑客”。

JavaScript字符串方法有很多,其中有三个方法与字符串裁剪有关,他们分别是slice()、substring()和substr(),我把他们统称为“三剑客”。

由于他们都是用于裁剪字符串,很容易混淆,所以接下来我将结合具体实例来讲讲他们的共同点和区别。

一、共同点

① 接受一个或两个参数,其中第一个参数为裁剪的开始位置
② 都会返回被裁剪下来的子字符串,而原字符串不受影响
③ 若不传第二个参数,则从开始位置(第一个参数)一直截取到字符串结尾。

var str = '微信公众号:前端微站';
var str1 = str.slice(2);  
console.log(str1);    // "公众号:前端微站"
str1 = str.substring(2);
console.log(str1);   // "公众号:前端微站"
str1 = str.substr(2);
console.log(str1);   // "公众号:前端微站"
console.log(str);   // "微信公众号:前端微站"

可以看出,当只传入一个参数时,这三个方法的用法和作用都是一致的,都是将“公”字(索引值为2)一直到字符串末尾的字符串裁剪下来并返回,并且都不会影响到原字符串。

二、区别

① slice()和substring()的第二个参数均表示的是裁剪的结束位置(但不包括该项,这与数组中的slice()方法类似),而substr()的第二个参数则表示的是裁剪下来字符串长度
② 当传入的参数为负值时,slice()会将所有负参数与字符串的长度相加,substring()会把所有负参数都转换为0,而substr()就相对比较复杂了,它会将第一个负参数加上字符串长度,第二个参数转换为0

1. 参数均为正数

var str = '微信公众号:前端微站';
var str1 = str.slice(2,5);
console.log(str1);    // "公众号"
str1 = str.substring(2,5);
console.log(str1);    // "公众号"
str1 = str.substr(2,3);
console.log(str1);    // "公众号"

很明显,slice()和substring()用法一致,两个参数分别都表示的是起始位置2结束位置5,不包含结束位置5所在字符(“:”),而substr()第二个参数表示的是要裁剪下来的字符串长度,实例中是裁剪3个字符。

2. 参数存在负数

var str = '微信公众号:前端微站';
console.log(str.length);   // 10
var str1 = str.slice(-4);   //  相当于str.slice(6)
console.log(str1);   //  "前端微站"
str1 = str.substring(-4);   //  相当于str.substring(0)
console.log(str1);   //  "微信公众号:前端微站"
str1 = str.substr(-4);   //  相当于str.substr(6)
console.log(str1);   //  "前端微站"

var str2 = str.slice(2,-4);   //  相当于str.slice(2,6)
console.log(str2);   //  "公众号:"
str2 = str.substring(2,-4);   //  相当于str.substring(2,0),也就是str.substring(0,2)
console.log(str2);   //  "微信"
str2 = str.substr(2,-4);   //  相当于str.substr(2,0)
console.log(str2);   //  ""

var str3 = str.slice(-2,-4);   //  相当于str.slice(8,6)
console.log(str3);    // ""
str3 = str.substring(-2,-4);   //  相当于str.substring(0,0)
console.log(str3);   // ""
str3 = str.substr(-2,-4);   //  相当于str.substr(8,0)
console.log(str3);   // ""

var str4 = str.slice(-4,-2);   //  相当于str.slice(6,8)
console.log(str4);   // "前端"
str4 = str.substring(-4,-2);  //  相当于str.substring(0,0)
console.log(str4);  // ""
str4 = str.substr(-4,-2);  //  相当于str.substr(6,0)
console.log(str4);  // ""

当参数为负数时,只需牢记,slice见负加总长,substring见负则归零,substr一加总长一归零。 另外还需要特别注意的一点是,slice()第一个参数须小于第二个参数才能正常截取字符串,否则返回的是空字符串,而substring()则没有这个问题。

本文重点总结:

① substr()第二个参数是裁剪长度,只要为负,裁剪结果必定是空字符串
② 不管如何裁剪,均不影响原字符串
③ 当参数为负,slice加总长,substring则归零,substr一加总长一归零。

相关文章
|
1月前
|
JavaScript 前端开发
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
|
1月前
|
JavaScript 前端开发
js字符串替换
js字符串替换
16 2
|
3月前
|
JavaScript 前端开发
javascript 如何判断字符串日期是否相差七天
在JavaScript中,你可以使用`Date`对象来比较两个日期之间的差异。下面是一个简单的示例,演示如何判断两个字符串日期是否相差七天: ```javascript function isSevenDaysDifference(date1, date2) { // 确保输入是字符串 if (typeof date1 !== 'string' || typeof date2 !== 'string') { return false; } // 将字符串转换为Date对象 var d1 = new Date(date1);
|
3月前
|
JavaScript 数据安全/隐私保护 Android开发
Js随机生成字符串---autojs pro 篇
Js随机生成字符串---autojs pro 篇
26 0
|
8天前
|
JavaScript 前端开发 索引
JavaScript中与字符串相关的方法
JavaScript中与字符串相关的方法
|
1月前
|
JavaScript 前端开发 索引
JavaScript字符串检查:从基础到高级
【2月更文挑战第26天】
24 0
JavaScript字符串检查:从基础到高级
|
1天前
|
JavaScript 前端开发
js字符串拼接
js字符串拼接
|
1天前
|
JavaScript 数据处理 索引
js字符串截取
js字符串截取
19 11
|
8天前
|
JavaScript
js 字符串String转对象Object
该代码示例展示了如何将一个以逗号分隔的字符串(`'1.2,2,3,4,5'`)转换为对象数组。通过使用`split(',')`分割字符串并`map(parseFloat)`处理每个元素,将字符串转换成浮点数数组,最终得到一个对象数组,其类型为`object`。
|
12天前
|
JavaScript
JS去除字符串的方法
JS去除字符串的方法