substring()
和 substr()
都是 JavaScript 字符串對(duì)象的方法,用于截取字符串。它們的區(qū)別在于:
參數(shù)不同:substring()
方法接受兩個(gè)參數(shù),分別表示起始位置和結(jié)束位置(不包括結(jié)束位置對(duì)應(yīng)的字符),而 substr()
方法接受兩個(gè)參數(shù),第一個(gè)參數(shù)表示起始位置,第二個(gè)參數(shù)表示要截取的字符個(gè)數(shù)。
負(fù)數(shù)處理方式不同:當(dāng)傳入負(fù)數(shù)參數(shù)時(shí),substring()
方法會(huì)將其視為 0,而 substr()
方法則將其視為相對(duì)于字符串末尾的偏移量。
下面是一些具體的例子:
var str = "hello world";
console.log(str.substring(3, 7)); // 輸出 "lo w"
console.log(str.substr(3, 4)); // 輸出 "lo w"
console.log(str.substring(7, 3)); // 輸出 "lo w"(起始位置和結(jié)束位置會(huì)自動(dòng)調(diào)整)
console.log(str.substr(7, -2)); // 輸出 ""(負(fù)數(shù)參數(shù)轉(zhuǎn)換為 0)
console.log(str.substring(-3, 8)); // 輸出 "hello "(負(fù)數(shù)參數(shù)轉(zhuǎn)換為 0)
console.log(str.substr(-3, 2)); // 輸出 "rl"(-3 表示倒數(shù)第三個(gè)字符,2 表示截取兩個(gè)字符)
需要注意的是,由于 substring()
和 substr()
方法都是截取字符串的操作,因此如果傳入的參數(shù)超出了字符串的長(zhǎng)度范圍,它們都會(huì)自動(dòng)調(diào)整參數(shù)以適應(yīng)字符串的長(zhǎng)度。但是這種行為可能會(huì)導(dǎo)致一些意想不到的結(jié)果,因此在使用這兩個(gè)方法時(shí)需要特別小心。