字符串是一種包裝對象類型,只要引用了其方法或屬性,JavaScript就會將字符串值val通過調(diào)用new String(val)的方法轉換城對象,那么這個對象繼承了字符串的方法,一旦方法使用結束之后,這個新創(chuàng)建的對象就會被銷毀;
一 slice 方法
- str.slice(strat, end);
起始下標 <= 截取的范圍 < 結束下標
包括起始下標對應的字符,but不包括
結束下標;
1. 當只傳一個參數(shù)的時候:默認為start
var str = 'hello world';
str.slice(2); // llo world
截取的字符串為:start <= 截取范圍 < str.length
當參數(shù)是負數(shù)的時候
var str = 'hello world';
str.slice(-2); // ld
結果為:反向下標截取
反向的下標 <= 截取范圍 < str.length
當反向下標的絕對值大于或等于字符串長度,則會置為0
2. 當傳兩個參數(shù)的時候
var str = 'hello world';
str.slice(2,7); // llo w
截取的字符串為:start <= 截取范圍 < end
當參數(shù)是負數(shù)的時候
var str = 'hello world';
str.slice(-5,9); // wor
截取從反向下標到設置的結束下標的位置,如果設置的結束下標的位置在開始下標的前面,會截取出空
var str = 'hello world';
str.slice(-3,5); //
二 substring方法
- str.substring(start, end);
起始下標 <= 截取的范圍 < 結束下標
包括起始下標對應字符,but不包括結束下標;
1.當只傳一個參數(shù)的時候:默認為start
var str = 'hello world';
str.substring(2); // llo world
截取的字符串為: start<= 截取范圍 < str.length
當參數(shù)為負數(shù)時
// 例子:
var str = 'hello world';
str.substring(-2); // hello world
負數(shù)的起始值置0
2.當傳兩個參數(shù)的時候
var str = 'hello world';
str.substring(2,7); // llo w
var str = 'hello world';
str.substring(2,-5); // he
當結束下標為負數(shù)則置為0,然后與起始下標互換位置,起始下標正數(shù)搖身一變成為了結束下標,截取的方向依然從左往右;
截取的字符串為: start <= 截取范圍 < end
三 substr 方法
- str.substr(start, end);
起始下標 <= 截取的范圍 <= 自定義截取的長度
substr方法更直接(直接定義長度);
1.當只傳一個參數(shù)的時候:默認為start
var str = 'hello world';
console.log(str.substr(2)); // llo world
var str = 'hello world';
console.log(str.substr(-2)); // ld
和前面一樣,從反向下標開始截取到字符串結尾
截取的字符串為: start <= 截取范圍 < str.length
2.當傳兩個參數(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ù);
當截取的長度設置為0或者是負數(shù)的時候則返回空字符串;
總結:
- Slice
a) 注意截取順序: 從左至右
b) 結束下標出現(xiàn)在起始下標左側則返回空字符串 - Substring
a) 負數(shù)下標會置零,
b) start為正數(shù),end為負數(shù),end置零后會與start互換位置 - Substr
a) 長度不能為負數(shù)
b) Start可為負數(shù),可參考slice方法start為負數(shù)