substr和substring函數都是用來截取字符串的方法,但是兩者有以下幾個區別:
參數不同:substr函數接受兩個參數,第一個參數是起始位置,第二個參數是要截取的字符數。而substring函數接受兩個參數,第一個參數是起始位置,第二個參數是終止位置(不包括終止位置的字符)。
負數處理不同:當substr函數的第一個參數為負數時,表示從字符串末尾開始計算起始位置。而當substring函數的參數為負數時,會被自動轉換為0。
終止位置超出字符串長度:當substr函數的第二個參數大于字符串長度時,會截取到字符串末尾。而當substring函數的第二個參數大于字符串長度時,會被自動轉換為字符串長度。
返回值不同:substr函數返回從起始位置開始的指定長度的子字符串。substring函數返回從起始位置到終止位置的子字符串。
示例:
var str = "Hello World!";
console.log(str.substr(0, 5)); // 輸出 "Hello"
console.log(str.substring(0, 5)); // 輸出 "Hello"
console.log(str.substr(6, 5)); // 輸出 "World"
console.log(str.substring(6, 11)); // 輸出 "World"
console.log(str.substr(-6)); // 輸出 "World!"
console.log(str.substring(-6)); // 輸出 "Hello World!"
console.log(str.substr(0, 20)); // 輸出 "Hello World!"
console.log(str.substring(0, 20)); // 輸出 "Hello World!"
總的來說,substr函數更靈活,可以通過指定起始位置和字符數來截取字符串。而substring函數更直觀,可以通過指定起始位置和終止位置來截取字符串。