| 方法 | 參數(shù) | 返回值 |
|---|---|---|
| slice(start, end) | start(必需) -起始位置; end(可選)-結(jié)束位置,若未指定,則默認(rèn)到末尾所有元素 | 返回 [start,end)之間的元素 |
| substring(start, end) | start(必需) -起始位置;end(可選)-結(jié)束位置,若未指定,則默認(rèn)到末尾所有元素 | 返回 [start,end)之間的元素 |
| substr(start, length) | start(必需)-起始位置;length(可選)-所截取的元素的個(gè)數(shù),若未指定,則默認(rèn)到末尾 | 返回[start, start+length)之間的元素 |
當(dāng)傳的參數(shù)都為正數(shù)的時(shí)候,substring和slice沒(méi)有區(qū)別。當(dāng)參數(shù)為負(fù)數(shù)時(shí),三個(gè)函數(shù)的行為不盡相同。
- slice() - 將傳入的負(fù)參數(shù)與字符串長(zhǎng)度相加;
- substring() - 把所有的負(fù)值置為0;
- substr() - 將負(fù)的第一個(gè)參數(shù)與字符串長(zhǎng)度相加,負(fù)的第二個(gè)參數(shù)置為0。
例子
1. 參數(shù)為正數(shù)
var str = 'hello world';
console.log(str.slice(3)); // lo world
console.log(str.substring(3));// lo world
console.log(str.substr(3));// lo world
console.log(str.slice(3, 7)); // lo w
console.log(str.substring(3, 7)); // lo w
console.log(str.substr(3, 7));//lo worl
2 參數(shù)為負(fù)數(shù)
var str = 'hello world';
console.log(str.slice(-3)); // rld
console.log(str.substring(-3));// hello world
console.log(str.substr(-3));// rld
console.log(str.slice(3, -4)); // lo w
console.log(str.substring(3, -4)); // hel
console.log(str.substr(3, -4));// ""(空字符串)
以上示例的元算過(guò)程如下:
- slice(-3) => slice(8)
- substring(-3) => substring(0)
- substr(-3) => substr(8)
- slice(3, -4) => slice(3, 7)
- substring(3, -4) => substring(3, 0) =>substring(0, 3)
- substr(3, -4) => substr(3, 0)