Try it
const str = "Mozilla";
console.log(str.substr(1, 2));
// Expected output: "oz"
console.log(str.substr(2));
// Expected output: "zilla"
Syntax
js
substr(start)
substr(start, length)
Parameters
start-
The index of the first character to include in the returned substring.
lengthOptional-
The number of characters to extract.
Return value
A new string containing the specified part of the given string.
Description
A string's substr() method extracts length characters from the string, counting from the start index.
- If
start >= str.length, an empty string is returned. - If
start < 0, the index starts counting from the end of the string. More formally, in this case the substring starts atmax(start + str.length, 0). - If
startis omitted orundefined, it's treated as0. - If
lengthis omitted orundefined, or ifstart + length >= str.length,substr()extracts characters to the end of the string. - If
length < 0, an empty string is returned. - For both
startandlength,NaNis treated as0.
Although you are encouraged to avoid using substr(), there is no trivial way to migrate substr() to either slice() or substring() in legacy code without essentially writing a polyfill for substr(). For example, str.substr(a, l), str.slice(a, a + l), and str.substring(a, a + l) all have different results when str = "01234", a = 1, l = -2 — substr() returns an empty string, slice() returns "123", while substring() returns "0". The actual refactoring path depends on the knowledge of the range of a and l.
Examples
Using 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)); // ''
Specifications
| Specification |
|---|
| ECMAScript® 2027 Language Specification # sec-string.prototype.substr |