The substring()
method returns a subset of a string
between one index and another, or through the end of the string.
Syntax
str.substring(indexStart[, indexEnd])
Parameters
indexStart
- An integer between
0
and the length of the string, specifying the offset into the string of the first character to include in the returned substring. indexEnd
- Optional. An integer between
0
and the length of the string, which specifies the offset into the string of the first character not to include in the returned substring.
Return value
A new string containing the extracted section of the given string.
Description
substring()
extracts characters from indexStart
up to but not including indexEnd
. In particular:
- If
indexStart
equalsindexEnd
,substring()
returns an empty string. - If
indexEnd
is omitted,substring()
extracts characters to the end of the string. - If either argument is less than 0 or is
NaN
, it is treated as if it were 0. - If either argument is greater than
stringName.length
, it is treated as if it werestringName.length
.
If indexStart
is greater than indexEnd
, then the effect of substring()
is as if the two arguments were swapped; for example, str.substring(1, 0) == str.substring(0, 1)
.
Examples
Using substring()
The following example uses substring()
to display characters from the string 'Mozilla'
:
var anyString = 'Mozilla'; // Displays 'Moz' console.log(anyString.substring(0, 3)); console.log(anyString.substring(3, 0)); // Displays 'lla' console.log(anyString.substring(4, 7)); console.log(anyString.substring(4)); console.log(anyString.substring(7, 4)); // Displays 'Mozill' console.log(anyString.substring(0, 6)); // 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.
// Displays 'illa' the last 4 characters var anyString = 'Mozilla'; var anyString4 = anyString.substring(anyString.length - 4); console.log(anyString4); // Displays 'zilla' the last 5 characters var anyString = 'Mozilla'; var anyString5 = anyString.substring(anyString.length - 5); console.log(anyString5);
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'
into 'Brave New Web'
.
// Replaces oldS with newS in the string fullS function replaceString(oldS, newS, fullS) { for (var i = 0; i < fullS.length; ++i) { if (fullS.substring(i, i + oldS.length) == oldS) { fullS = fullS.substring(0, i) + newS + fullS.substring(i + oldS.length, fullS.length); } } return fullS; } replaceString('World', 'Web', 'Brave New World');
Note that this can result in an infinite loop if oldS
is itself a substring of newS
— for example, if you attempted to replace 'World' with 'OtherWorld' here. A better method for replacing strings is as follows:
function replaceString(oldS, newS, fullS) { return fullS.split(oldS).join(newS); }
The code above serves as an example for substring operations. If you need to replace substrings, most of the time you will want to use String.prototype.replace()
.
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Implemented in JavaScript 1.0. |
ECMAScript 5.1 (ECMA-262) The definition of 'String.prototype.substring' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'String.prototype.substring' in that specification. |
Standard | |
ECMAScript 2017 Draft (ECMA-262) The definition of 'String.prototype.substring' in that specification. |
Draft |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |