Js中substr,substring,slice擷取字串的異同
今天在寫程式的時候發現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)) 複製程式碼

當第一個引數為負數時,對於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)); 複製程式碼

二、兩個引數都傳
兩引數都為正數,且第二個 大 於第一個時。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)); 複製程式碼

於第一個時。通過和上面的對比可以看出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)); 複製程式碼

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