The substring()
method returns the part of the string
between the start and end indexes, or to the end of the string.
str.substring(indexStart[, indexEnd])
indexStart
indexEnd
A new string containing the specified part of the given string.
substring()
extracts characters from indexStart
up to but not including indexEnd
. In particular:
indexEnd
is omitted, substring()
extracts characters to the end of the string.indexStart
is equal to indexEnd
, substring()
returns an empty string.indexStart
is greater than indexEnd
, then the effect of substring()
is as if the two arguments were swapped; See example below.Any argument value that is less than 0 or greater than stringName.length
is treated as if it were 0 and stringName.length
respectively. Any argument value that is NaN
is treated as if it were 0.
substring()
The following example uses substring()
to display characters from the string 'Mozilla'
:
var 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));
substring()
with length
propertyThe 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);
substring()
and substr()
There's a subtle difference between the substring()
and substr()
methods, and you should be careful not get them confused.
The arguments of substring()
represent the starting and ending indexes, while the arguments of substr()
represent the starting index and the length of characters to include in the returned string.
var text = 'Mozilla'; console.log(text.substring(2,5)); // => "zil" console.log(text.substr(2,3)); // => "zil"
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 (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()
.
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 Latest Draft (ECMA-262) The definition of 'String.prototype.substring' in that specification. | Draft |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | Yes | Yes | 1 | Yes | Yes | Yes |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | Yes | Yes | Yes | 4 | Yes | Yes | Yes |
Server | |
---|---|
Node.js | |
Basic support | Yes |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring