方法 | 參數(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)之間的元素 |
有個(gè)需要注意的地方就是:substring是以兩個(gè)參數(shù)中較小一個(gè)作為起始位置节芥,較大的參數(shù)作為結(jié)束位置在刺。
當(dāng)傳的參數(shù)都為正數(shù)的時(shí)候,slice和substring沒有區(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坛芽。
例子:
- 參數(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
- 參數(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));// ""(空字符串)
參數(shù)為負(fù)數(shù)示例的運(yùn)算過程如下:
- 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)
原文:https://blog.csdn.net/qq_38983511/article/details/104979834