Examples
Extract a substring from text:
let text = "Hello world!";
let result = text.substr[1, 4];
Try it Yourself »
Start at position 2:
let result = text.substr[2];
Try it Yourself »
More examples below.
Definition and Usage
The substr[]
method extracts a part of a string.
The substr[]
method begins at a specified position, and returns a specified number of characters.
The substr[]
method does not change the original string.
To extract characters from the end of the string, use a negative start position.
Syntax
string.substr[start, length]
Parameters
Parameter | Description |
start | Required. The start position. First character is at index 0. If start is greater than the length, substr[] returns "". |
length | Optional. The number of characters to extract. If omitted, it extracts the rest of the string |
Return Value
Type | Description |
A string | A string containing the extracted part. If length is 0 or negative, an empty string is returned. |
More Examples
Browser Support
substr[]
is an ECMAScript1 [ES1] feature.
ES1 [JavaScript 1997] is fully supported in all browsers:
Chrome | IE | Edge | Firefox | Safari | Opera |
Yes | Yes | Yes | Yes | Yes | Yes |
The substring[]
method returns the part of the string
between the start and end indexes, or to the end of the string.Try it
Syntax
substring[indexStart]
substring[indexStart, indexEnd]
Parameters
indexStart
The index of the first character to include in the returned substring.
indexEnd
OptionalThe index of the first character to exclude from the returned substring.
Return value
A new string containing the specified part of the given string.
Description
substring[]
extracts characters from indexStart
up to but not including indexEnd
. In particular:
- If
indexEnd
is omitted,substring[]
extracts characters to the end of the string. - If
indexStart
is equal toindexEnd
,substring[]
returns an empty string. - If
indexStart
is greater thanindexEnd
, then the effect ofsubstring[]
is as if the two arguments were swapped; see example below.
Any argument value that is less than 0
or greater than str.length
is treated as if it were 0
and str.length
, respectively.
Any argument value that is
NaN
is treated as if it were 0
.
Examples
Using substring[]
The following example uses substring[]
to display characters from the string 'Mozilla'
:
const anyString = 'Mozilla';
// Displays 'M'
console.log[anyString.substring[0, 1]];
console.log[anyString.substring[1, 0]];
// Displays 'Mozill'
console.log[anyString.substring[0, 6]];
// Displays 'lla'
console.log[anyString.substring[4]];
console.log[anyString.substring[4, 7]];
console.log[anyString.substring[7, 4]];
// Displays 'Mozilla'
console.log[anyString.substring[0, 7]];
console.log[anyString.substring[0, 10]];
Using substring[] with length property
The following example uses the substring[]
method and length
property to extract the last characters
of a particular string. This method may be easier to remember, given that you don't need to know the starting and ending indices as you would in the above examples.
const text = 'Mozilla';
// Takes 4 last characters of string
console.log[text.substring[text.length - 4]]; // prints "illa"
// Takes 5 last characters of string
console.log[text.substring[text.length - 5]]; // prints "zilla"
The difference between substring[] and substr[]
There are subtle differences between the substring[]
and substr[]
methods, so
you should be careful not to get them confused.
- The two parameters of
substr[]
arestart
andlength
, while forsubstring[]
, they arestart
andend
. substr[]
'sstart
index will wrap to the end of the string if it is negative, whilesubstring[]
will clamp it to0
.- Negative lengths in
substr[]
are treated as zero, whilesubstring[]
will swap the two indexes ifend
is less thanstart
.
Furthermore, substr[]
is considered a legacy
feature in ECMAScript, so it is best to avoid using it if possible.
const text = 'Mozilla';
console.log[text.substring[2, 5]]; // => "zil"
console.log[text.substr[2, 3]]; // => "zil"
Differences between substring[] and slice[]
The substring[]
and slice[]
methods are almost identical, but there are a couple of subtle differences between the two, especially in the way negative arguments are dealt with.
The substring[]
method swaps its two arguments if indexStart
is greater than indexEnd
, meaning that a string is still returned. The
slice[]
method returns an empty string if this is the case.
const text = 'Mozilla';
console.log[text.substring[5, 2]]; // => "zil"
console.log[text.slice[5, 2]]; // => ""
If either or both of the arguments are negative or NaN
, the substring[]
method treats them as if they were 0
.
console.log[text.substring[-5, 2]]; // => "Mo"
console.log[text.substring[-5, -2]]; // => ""
slice[]
also treats NaN
arguments as 0
, but when it is given negative values it counts backwards from the end of the string to find
the indexes.
console.log[text.slice[-5, 2]] // => ""
console.log[text.slice[-5, -2]] // => "zil"
See the slice[]
page for more examples with negative numbers.
Replacing a substring within a string
The following example replaces a substring within a string. It will replace both individual characters and substrings. The function call at the end of the example changes the string Brave New World
to Brave New Web
.
// Replaces oldS with newS in the string fullS
function replaceString[oldS, newS, fullS] {
for [let i = 0; i