字符串方法 substr() slice() substring()
substr(num1, num2)
num1 表示从 num1 位置开始截取
num2 表示截取 num2 长度的字符串,缺省时默认将字符串的末尾作为截取结束位置
slice(num1, num2)
num1 表示从 num1 开始截取
num2 表示截取到 num2 为止(不包括 num2 ),缺省时默认将字符串的末尾作为截取结束位置
substring()
与 slice() 相同
参数都为正值时
// 参数都为正时的 demo
var str = 'hello world!'
var str1 = str.substr(3) // -> 'lo world!'
var str2 = str.slice(3) // -> 'lo world!'
var str3 = str.substring(3) // -> 'lo world!'
var str4 = str.substr(3, 7) // -> 'lo worl'
var str5 = str.slice(3, 7) // -> 'lo w'
var str6 = str.substring(3, 7) // -> 'lo w'
参数为负值时
- slice(num1, num2):若 num1 值为负,num1 与需要操作的字符串长度相加作为第一个参数值,即 num1 = num1 + str.length ;若 num2 值为负,num2 与需要操作的字符串长度相加作为第二个参数值,即 num2 = num2 + str.length
- substr(num1, num2):若 num1 值为负,num1 与需要操作的字符串长度相加作为第一个参数值,即 num1 = num1 + str.length ;若 num2 值为负,则第二个参数 num2 作为 0 处理
- substring(num1, num2):若 num1 值为负,则第一个参数 num1 作为 0 处理; 若 num2 值为负,则第一个参数 num2 作为 0 处理
总结:slice() 方法会将传入的负值与字符串的长度相加;substr() 方法会将负的第一个参数加上字符串的长度,将负的第二个参数转换为 0;substring() 方法会将全部的负值参数都转换为 0
var str = 'hello world'
var str1 = str.substr(-3) // -> 'rld'
var str2 = str.slice(-3) // -> 'rld'
var str3 = str.substring(-3) // -> 'hello world'
var str4 = str.substr(3, -4) // -> ''
var str5 = str.slice(3, -4) // -> 'lo w'
var str6 = str.substring(3, -4) // -> 'hel'
参考《JavaScript 高级程序设计》(第3版)