[基礎]substr、substring、slice對比

substr 方法

var a = '0123456789';
console.log(a.substr(1,3)); // '123'
console.log(a.substr(-3,3)); // '789'
console.log(a.substr(-1)); // '9'
console.log(a.substr(11)); // ''
console.log(a.substr(-11)); // ‘0123456789'
console.log(a.substr(1,-3)); // ''
console.log(a.substr('1a')); // ‘0123456789'
console.log(a.substr('1')); // ‘123456789’
console.log(a.substr('1.3'));  // ‘123456789'
console.log(a.substr('1.6'));  // ‘123456789’
console.log(a.substr(1,'3')); // ‘123'
console.log(a.substr(1,'3a')); // ‘'
console.log(a.substr(1,’3.3')); // ‘123'
console.log(a.substr(1,’3.6')); // ‘123’
console.log(a.substr(1,-1)); // ‘'
console.log(a.substr(1,11)); // ‘’
console.log(a.substr()) // 0123456789

通過結果分析原理:

1、接受兩個參數(shù),第一個為 所取子字符串的下標位置,第二個為截取字符串的長度
2、開始位置計算方法:

1)通過Number轉為數(shù)字,非數(shù)字則返回0,
2)通過parseInt對數(shù)字取整,
3)如果為負數(shù),則+len
4)如果小于0則返回0

3、長度計算方法:

1)未指定長度,長度=max(0,len-start)
2)通過Number轉為數(shù)字,非數(shù)字則返回0,
3)通過parseInt對數(shù)字取整,
4)如果小于0則返回0
5)如果大于len-start,則返回len-start

4、返回從開始下標,指定長度的子字符串

substring

var a= '0123456789',

a.substring(1,3);  // ’12'
a.substring(1,-3); // ‘0’
a.substring(-1,10); // ‘0123456789’
a.substring('1a',3); // 012
a.substring('1',3); // 12
a.substring(1,'3a'); // 0
a.substring(1,'3'); // 12
a.substring(1) ;// 123456789
a.substring(1.3); // 123456789
a.substring(1.6); // 123456789
a.substring(1,3.3);  // ’12'
a.substring(1,3.6);  // ’12’
a.substring() // 0123456789


通過結果分析原理:

1、接受兩個參數(shù),第一個為所取子字符串的開始下標位置,第二個參數(shù)為截取字符串的結束下標(不包含)
2、首先計算,開始下標位置

1)未指定,則返回0
2)Number轉為數(shù)字,非數(shù)字返回0,
3)parseInt轉為整數(shù)
4)小于0,返回0

3、計算結束下標

1)未指定,則返回len
2)Number轉為數(shù)字,非數(shù)字返回0
3)parseInt轉為整數(shù)
4)小于0,則返回0
5)大于len,則返回len

4、如果結束下標大于開始下標,則交換

5、返回開始下標、結束下標區(qū)間的子字符串

slice


var a= '0123456789',

a.slice(1,-3); // ‘123456’
a.slice(-1,10); // ‘9’
a.slice('1a',3); // 012
a.slice('1',3); // 12
a.slice(1,'3a'); // ‘’
a.slice(1,'-3a'); // ‘’
a.slice(1,'3'); // 12
a.slice(1,’-3'); // 123456
a.slice(1) ;// 123456789
a.slice(1.3); // 123456789
a.slice(1.6); // 123456789
a.slice(1,3.3);  // ’12'
a.slice(1,3.6);  // ’12’
a.slice() // 0123456789

通過結果分析原理:
1、接受兩個參數(shù),第一個參數(shù)代表開始截取字符串的下標,第二個參數(shù)代表截取字符串的結束下標(不包含)
2、首先計算開始下標:

1)未指定,則返回0
2)Number轉為數(shù)字,非數(shù)字返回0
3)parseInt轉為整數(shù)
4)小于0,則+len
5)小于0,則返回0

3、計算結束下標

1)未指定,則返回len
2)Number轉為數(shù)字,非數(shù)字返回0
3)parseInt轉為整數(shù)
4)小于0,則+len
5)小于0,則返回0
6)大于len,則返回len

4、結束下標<=開始下標,返回空子字符串

5、返回根據(jù)開始下標、結束下標截取的字符串

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,779評論 18 399
  • Javascript有很多數(shù)組的方法,有的人有W3C的API,還可以去MDN上去找,但是我覺得API上說的不全,M...
    頑皮的雪狐七七閱讀 4,220評論 0 6
  • 從春雨到冬雪 從微風到細雨 從熾熱到冷卻 我忘了是多少個秋 我忘了是多少個晴 我始終在等你 望穿秋水地等你
    珈迦閱讀 317評論 3 11
  • 什么是foundation框架 框架是由許多類、方法、函數(shù)組成的一個類庫,以便開發(fā)者更方便的開發(fā)程序。Founda...
    ___珋月閱讀 434評論 0 0
  • 一個朋友,打電話給我,聲音顫抖,想要見我。聽著她與往常不一樣的聲音,我很是擔心她,掛下電話,我立馬穿上衣服、鞋子,...
    城火閱讀 1,612評論 12 15