字符串方法 substr() slice() substring()
substr(num1, num2)
num1 表示從 num1 位置開始截取
num2 表示截取 num2 長度的字符串,缺省時默認將字符串的末尾作爲截取結束位置
slice(num1, num2)
num1 表示從 num1 開始截取
num2 表示截取到 num2 爲止(不包括 num2 ),缺省時默認將字符串的末尾作爲截取結束位置
substring()
與 slice() 相同
參數都爲正值時
// 參數都爲正時的 demo
var str = 'hello world!'
var str1 = str.substr(3) // -> 'lo world!'
var str2 = str.slice(3) // -> 'lo world!'
var str3 = str.substring(3) // -> 'lo world!'
var str4 = str.substr(3, 7) // -> 'lo worl'
var str5 = str.slice(3, 7) // -> 'lo w'
var str6 = str.substring(3, 7) // -> 'lo w'
參數爲負值時
- slice(num1, num2):若 num1 值爲負,num1 與需要操作的字符串長度相加作爲第一個參數值,即 num1 = num1 + str.length ;若 num2 值爲負,num2 與需要操作的字符串長度相加作爲第二個參數值,即 num2 = num2 + str.length
- substr(num1, num2):若 num1 值爲負,num1 與需要操作的字符串長度相加作爲第一個參數值,即 num1 = num1 + str.length ;若 num2 值爲負,則第二個參數 num2 作爲 0 處理
- substring(num1, num2):若 num1 值爲負,則第一個參數 num1 作爲 0 處理; 若 num2 值爲負,則第一個參數 num2 作爲 0 處理
總結:slice() 方法會將傳入的負值與字符串的長度相加;substr() 方法會將負的第一個參數加上字符串的長度,將負的第二個參數轉換爲 0;substring() 方法會將全部的負值參數都轉換爲 0
var str = 'hello world'
var str1 = str.substr(-3) // -> 'rld'
var str2 = str.slice(-3) // -> 'rld'
var str3 = str.substring(-3) // -> 'hello world'
var str4 = str.substr(3, -4) // -> ''
var str5 = str.slice(3, -4) // -> 'lo w'
var str6 = str.substring(3, -4) // -> 'hel'
參考《JavaScript 高級程序設計》(第3版)