Summary
The substring() method returns a subset of a string between one index and another, or through the end of the string.
Syntax
str.substring(indexA[, indexB])
Parameters
-
indexA - An integer between 0 and the length of the string.
-
indexB - (optional) An integer between 0 and the length of the string.
Description
substring extracts characters from indexA up to but not including indexB. In particular:
- If
indexAequalsindexB,substringreturns an empty string. - If
indexBis omitted,substringextracts 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 indexA is larger than indexB, then the effect of substring is as if the two arguments were swapped; for example, str.substring(1, 0) == str.substring(0, 1).
Examples
Example: Using substring
The following example uses substring to display characters from the string "Mozilla":
// assumes a print function is defined 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(7,4)); // Displays "Mozill" console.log(anyString.substring(0,6)); // Displays "Mozilla" console.log(anyString.substring(0,7)); console.log(anyString.substring(0,10));
Example: 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".
function replaceString(oldS, newS, fullS) {
// Replaces oldS with newS in the string 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. | Standard | Implemented in JavaScript 1.0 |
| ECMAScript Language Specification 5.1th Edition (ECMA-262) | Standard | |
| ECMAScript Language Specification 6th Edition (ECMA-262) | 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) |