String.prototype.substr()
已棄用:此特性不再推薦。雖然某些瀏覽器可能仍然支援它,但它可能已經從相關的網路標準中刪除,可能正在刪除過程中,或者可能僅為相容性目的而保留。請避免使用它,如果可能,請更新現有程式碼;請參閱本頁底部的相容性表格以指導您的決策。請注意,此特性可能隨時停止工作。
substr() 方法用於從字串中提取一部分,從指定索引開始,幷包含指定的後續字元數。
注意: substr() 不是 ECMAScript 規範的一部分,而是定義在 Annex B:瀏覽器附加的 ECMAScript 功能 中,對於非瀏覽器環境,它是可選的。因此,建議使用標準的 String.prototype.substring() 和 String.prototype.slice() 方法,以使您的程式碼具有最大的跨平臺相容性。在 String.prototype.substring() 頁面 上有一些這三種方法的比較。
試一試
const str = "Mozilla";
console.log(str.substr(1, 2));
// Expected output: "oz"
console.log(str.substr(2));
// Expected output: "zilla"
語法
js
substr(start)
substr(start, length)
引數
返回值
一個包含給定字串指定部分的新字串。
描述
字串的 substr() 方法從字串中提取 length 個字元,從 start 索引開始計數。
- 如果
start >= str.length,則返回一個空字串。 - 如果
start < 0,則索引從字串末尾開始計數。更正式地說,在這種情況下,子字串從max(start + str.length, 0)開始。 - 如果省略
start或其值為undefined,則將其視為0。 - 如果省略
length或其值為undefined,或者如果start + length >= str.length,則substr()會提取到字串的末尾。 - 如果
length < 0,則返回一個空字串。 - 對於
start和length,NaN都被視為0。
儘管不鼓勵使用 substr(),但在遺留程式碼中,沒有簡單的方法可以將其遷移到 slice() 或 substring(),而不實際上為 substr() 編寫一個 polyfill。例如,當 str = "01234", a = 1, l = -2 時,str.substr(a, l)、str.slice(a, a + l) 和 str.substring(a, a + l) 的結果都不同——substr() 返回一個空字串,slice() 返回 "123",而 substring() 返回 "0"。實際的重構路徑取決於對 a 和 l 範圍的瞭解。
示例
使用 substr()
js
const string = "Mozilla";
console.log(string.substr(0, 1)); // 'M'
console.log(string.substr(1, 0)); // ''
console.log(string.substr(-1, 1)); // 'a'
console.log(string.substr(1, -1)); // ''
console.log(string.substr(-3)); // 'lla'
console.log(string.substr(1)); // 'ozilla'
console.log(string.substr(-20, 2)); // 'Mo'
console.log(string.substr(20, 2)); // ''
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-string.prototype.substr |
瀏覽器相容性
載入中…