slice()、substring()和substr()
這三個(gè)方法都返回被操作字符串的一個(gè)子字符串,而且也都接受一或兩個(gè)參數(shù)。
slice() 第一個(gè)參數(shù)指定子字符串的開始位置,第二個(gè)參數(shù)指定的是子字符串的結(jié)束位置(但不包括)。
substring() 第一個(gè)參數(shù)指定子字符串的開始位置,第二個(gè)參數(shù)指定的是子字符串的結(jié)束位置(但不包括)。
substr() 第一個(gè)參數(shù)指定子字符串的開始位置,第二個(gè)參數(shù)指定的是返回字符個(gè)數(shù)。
var stringValue = "hello world";
alert(stringValue.slice(3)); //"lo world"
alert(stringValue.substring(3)); //"lo world"
alert(stringValue.substr(3)); //"lo world"
alert(stringValue.slice(3,7)); //"lo w"
alert(stringValue.substring(3,7)); //"lo w"
alert(stringValue.substr(3,7)); //"lo worl"
如果參數(shù)為負(fù)值,就不太一樣了,silce() 方法會(huì)將傳入的負(fù)值與字符串的長(zhǎng)度相加,substring() 方法把所有負(fù)值參數(shù)轉(zhuǎn)換為0,substr() 方法將第一個(gè)負(fù)值參數(shù)加上字符串的長(zhǎng)度,第二個(gè)負(fù)值參數(shù)轉(zhuǎn)換為0。
var stringValue = "hello world";
alert(stringValue.slice(-3)); //"rld"
alert(stringValue.substring(-3)); //"hello world"
alert(stringValue.substr(-3)); //"rld"
alert(stringValue.slice(3,-4)); //"lo w"
alert(stringValue.substring(3,-4)); //"hel"
alert(stringValue.substr(3,-4)); //""
注意:substring() 方法會(huì)把第二個(gè)參數(shù)轉(zhuǎn)換為0,使調(diào)用變成了 substring(3,0),而由于這個(gè)方法會(huì)將較小的數(shù)作為開始位置,將較大的數(shù)作為結(jié)束位置,因此最終相當(dāng)于調(diào)用了 substring(0,3)。