ECMAScript 提供了三个基于字符串创建新字符串的方法:slice()、substr() 和 substring()
三个方法会返回被操作字符串的一个子字符串,而且也都接受一或两个参数。第一个参数指定字符串的开始位置,第二个参数(在指定的情况下)表示子字符串到哪里结束。
具体来说,slice() 和 substring() 的第二个参数指定的是子字符串最后一个字符后面的位置。而 substr() 的第二个参数指定的是返回的字符数。
var stringValue = "hello world";
console.log(stringValue.slice(3)); //lo world
console.log(stringValue.substring(3)); //lo world
console.log(stringValue.substr(3)); //lo world
console.log(stringValue.slice(3, 7)); //lo w
console.log(stringValue.substring(3, 7)); //lo w
console.log(stringValue.substr(3, 7)); //lo w
在传递给这些方法的参数是负值的情况下,它们的行为就不尽相同了。
slice() 方法会将传入的负值与字符串的长度相加
substr() 方法将负的第一个参数加上字符串的长度,而将负的第二个参数转换为0
substring() 方法会把所有负值参数都转换成 0
var stringValue = "hello world";
console.log(stringValue.slice(-3)); //rld
console.log(stringValue.substring(-3)); //hello world
console.log(stringValue.substr(-3)); //rld
console.log(stringValue.slice(3, -4)); //lo w
console.log(stringValue.substring(3, -4)); //hel
console.log(stringValue.substr(3, -4)); //""
注意:substring(3, 0),由于这个方法会将较小的数作为开始位置,将较大的数作为结束位置,因此最终相当于调用了substring(0, 3)。