slice(),substr()和substring()的詳解與區別

1. slice(x,y)

slice(x,y)截取字符串的一部分,並返回一個新的字符串。其中x爲起始位置索引值,y爲結束位置,不包含y。可以將x,y理解爲 [x,y)。其中,x和y的值存在以下幾種情況。

① 只有一個參數
此時會從參數下標開始到字符串結尾進行截取。

var str = "Hello world!";
console.log(str.slice(3));
// lo world!

② x<y
此時會從x開始,到y結束,不包含y。

var str = "Hello world!";
console.log(str.slice(3, 8));
// lo wo

③ x>y
此時會返回一個空字符串。

var str = "Hello world!";
console.log(str.slice(8, 3));
// <empty string>

④ y爲負數
此時會先將y的值與字符串的長度相加,然後將得到的結果當做新的y值。然後再參考上面的2和3兩種情況,根據情況給出結果。

var str = "Hello world!";
console.log(str.length);
// 12
console.log(str.slice(3, -12));	// -> consol.log(str.slice(3, (-12 + 12));
// <empty string>
console.log(str.slice(3, -2));	// -> consol.log(str.slice(3, (-2 + 12));
// lo worl

2. substr(x,y)

substr(x,y)截取字符串的一部分,並返回一個字符串。不同的是,其中x爲起始位置索引值,y爲截取長度。因爲x和y參數含義不同,所以區分x和y互換的意義不大。所以,x和y的值存在的情況如下。

① 只有一個參數
此時會從參數下標開始到字符串結尾進行截取。

var str = "Hello world!";
console.log(str.substr(3));
// lo world!

② 有兩個參數
此時按照x爲起始位置索引值,y爲截取長度,來對字符串進行截取。

var str = "Hello world!";
console.log(str.substr(3, 5));
// lo wo

③ y<0
此時會返回一個空字符串。

var str = "Hello world!";
console.log(str.substr(3, -5));
// <empty string>

3. substring(x,y)

substring(x,y)它的作用是提取字符串的子串。和slice(x,y)一樣,也是x爲起始位置索引值,y爲結束位置,不包含y。可以將x,y理解爲 [x,y)。其中,x和y的值存在以下幾種情況。

① 只有一個參數
此時會從參數下標開始到字符串結尾進行截取。

var str = "Hello world!";
console.log(str.substring(3));
// lo world!

② x<y
此時會從x開始,到y結束,不包含y。

var str = "Hello world!";
console.log(str.substring(3, 8));
// lo wo

③ x>y
此時會自動將x與y的位置進行互換,然後按照第二種情況給出結果。

var str = "Hello world!";
console.log(str.substring(8, 3));
// lo wo

④ x=y
此時會返回一個空字符串。

var str = "Hello world!";
console.log(str.substring(3, 3));
// <empty string>

⑤ y<0
當y爲負值時,會將y值看做0,然後根據第三種情況給出結果。換句話說,就是會提取x之前(不包含x)的所有字符串。

var str = "Hello world!";
console.log(str.substring(3, -5));
// Hel

三個方法的區別

1.slice和substring參數分別爲(起始位置索引值,結束位置索引值),substr的參數則爲(起始位置索引值,截取長度);
2.slice不能顛倒參數順序,substring可以;
3.slice和substring的第二個參數爲負時,結果不同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章