Js中substr,substring,slice擷取字串的異同

stone_fan發表於2019-04-13

概述

今天在寫程式的時候發現js中slice也能用來擷取字串,以前都是用substr或substring,於是想著拿它們來對比一下,它們都可以接受兩個引數,第一個是開始擷取的位置,預設為0,第二個下文具體介紹驗證程式碼地址:github.com/fanxuewen/e…

一、只傳第一個引數

當第一個引數為正數,它們是沒有區別的

let str='好好學習,天天向上';
console.log('substr---:',str.substr(2));
console.log('substring:',str.substring(2));
console.log('slice----:',str.slice(2))
複製程式碼

Js中substr,substring,slice擷取字串的異同
當第一個引數為負數時,對於substring如果引數小於 0 或為 NaN,則被當作 0,而substr和slice則是從後向前數。

let str='好好學習,天天向上';
console.log('substr---:',str.substr(-2));
console.log('substring:',str.substring(-2));
console.log('slice----:',str.slice(-2));
複製程式碼

Js中substr,substring,slice擷取字串的異同

二、兩個引數都傳

兩引數都為正數,且第二個於第一個時。substr是從第一個引數開始的位置起進行擷取,第二個引數代表擷取的長度;而substring和slice的兩個參數列示擷取位置的索引,包括開始,但不包括結尾

let str='好好學習,天天向上';
console.log('substr---:',str.substr(2,4));
console.log('substring:',str.substring(2,4));
console.log('slice----:',str.slice(2,4));
複製程式碼

Js中substr,substring,slice擷取字串的異同
兩引數都為正數,且第二個於第一個時。通過和上面的對比可以看出substr的第二個引數總是代表的是擷取的長度;substring的兩個參數列示的是擷取的索引(結果只包含索引值小的);slice的兩個引數都是正數且第二個引數小於第一個時會返回空(注意當第二引數是負數,代表的是從後向前數,如果數過來的索引大於第一個引數,還是擷取的包括開始但不包括結束的字串喲)。

let str='好好學習,天天向上';
console.log('substr---:',str.substr(2,1));
console.log('substring:',str.substring(2,1));
console.log('slice----:',str.slice(2,1));
複製程式碼

Js中substr,substring,slice擷取字串的異同

其他情況自行驗證........

相關文章