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)

引數

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,則返回一個空字串。
  • 對於 startlengthNaN 都被視為 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"。實際的重構路徑取決於對 al 範圍的瞭解。

示例

使用 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

瀏覽器相容性

另見