字符串是一種包裝對象類型然走,只要引用了其方法或?qū)傩远Γ琂avaScript就會將字符串值val通過調(diào)用new String(val)的方法轉(zhuǎn)換城對象民泵,那么這個對象繼承了字符串的方法跷乐,一旦方法使用結(jié)束之后屠橄,這個新創(chuàng)建的對象就會被銷毀兔魂;
一 slice 方法
- str.slice(strat, end);
起始下標(biāo) <= 截取的范圍 < 結(jié)束下標(biāo)
包括起始下標(biāo)對應(yīng)的字符烤芦,but不包括
結(jié)束下標(biāo);
1. 當(dāng)只傳一個參數(shù)的時候:默認為start
var str = 'hello world';
str.slice(2); // llo world
截取的字符串為:start <= 截取范圍 < str.length
當(dāng)參數(shù)是負數(shù)的時候
var str = 'hello world';
str.slice(-2); // ld
結(jié)果為:反向下標(biāo)截取
反向的下標(biāo) <= 截取范圍 < str.length
當(dāng)反向下標(biāo)的絕對值大于或等于字符串長度析校,則會置為0
2. 當(dāng)傳兩個參數(shù)的時候
var str = 'hello world';
str.slice(2,7); // llo w
截取的字符串為:start <= 截取范圍 < end
當(dāng)參數(shù)是負數(shù)的時候
var str = 'hello world';
str.slice(-5,9); // wor
截取從反向下標(biāo)到設(shè)置的結(jié)束下標(biāo)的位置构罗,如果設(shè)置的結(jié)束下標(biāo)的位置在開始下標(biāo)的前面,會截取出空
var str = 'hello world';
str.slice(-3,5); //
二 substring方法
- str.substring(start, end);
起始下標(biāo) <= 截取的范圍 < 結(jié)束下標(biāo)
包括起始下標(biāo)對應(yīng)字符智玻,but不包括結(jié)束下標(biāo)绰播;
1.當(dāng)只傳一個參數(shù)的時候:默認為start
var str = 'hello world';
str.substring(2); // llo world
截取的字符串為: start<= 截取范圍 < str.length
當(dāng)參數(shù)為負數(shù)時
// 例子:
var str = 'hello world';
str.substring(-2); // hello world
負數(shù)的起始值置0
2.當(dāng)傳兩個參數(shù)的時候
var str = 'hello world';
str.substring(2,7); // llo w
var str = 'hello world';
str.substring(2,-5); // he
當(dāng)結(jié)束下標(biāo)為負數(shù)則置為0,然后與起始下標(biāo)互換位置尚困,起始下標(biāo)正數(shù)搖身一變成為了結(jié)束下標(biāo)蠢箩,截取的方向依然從左往右;
截取的字符串為: start <= 截取范圍 < end
三 substr 方法
- str.substr(start, end);
起始下標(biāo) <= 截取的范圍 <= 自定義截取的長度
substr方法更直接(直接定義長度)事甜;
1.當(dāng)只傳一個參數(shù)的時候:默認為start
var str = 'hello world';
console.log(str.substr(2)); // llo world
var str = 'hello world';
console.log(str.substr(-2)); // ld
和前面一樣谬泌,從反向下標(biāo)開始截取到字符串結(jié)尾
截取的字符串為: start <= 截取范圍 < str.length
2.當(dāng)傳兩個參數(shù)的時候
var str = 'hello world';
console.log(str.substr(2,3)); // llo
var str = 'hello world';
console.log(str.substr(-2,5)); // ld
console.log(str.substr(-9,5)); // llo w
截取的字符串為: start <= 截取范圍 <= 自定義截取的長度
第二個參數(shù)是要截取的長度,所以不可以是負數(shù)逻谦;
當(dāng)截取的長度設(shè)置為0或者是負數(shù)的時候則返回空字符串掌实;
總結(jié):
- Slice
a) 注意截取順序: 從左至右
b) 結(jié)束下標(biāo)出現(xiàn)在起始下標(biāo)左側(cè)則返回空字符串 - Substring
a) 負數(shù)下標(biāo)會置零,
b) start為正數(shù)邦马,end為負數(shù)贱鼻,end置零后會與start互換位置 - Substr
a) 長度不能為負數(shù)
b) Start可為負數(shù),可參考slice方法start為負數(shù)