JS:String.prototype.substring()方法
String.prototype.substring()
方法返回字符串开始和结束索引之间的部分,或者返回字符串开始索引至字符串的结尾。
JavaScript Demo: String.substring()
var str = 'Mozilla';
console.log(str.substring(1, 3));
// expected output: "oz"
console.log(str.substring(2));
// expected output: "zilla"
Syntax/语法
String.prototype.substring(indexStart[, indexEnd]);
-
Parameters/参数:
-
indexStart
- The index of the first character to include in the returned substring.
- 要返回的子字符串中的第一个字符的索引。
-
indexEnd
- Optional. The index of the first character to exclude from the returned substring.
- 可选的。要返回的子字符串中排除的第一个字符的索引。
-
indexStart
- Return Value
- A new string containing the specified part of the given string.
Description
-
substring()
extracts characters fromindexStart
up to but not includingindexEnd
. In particular:- If
indexEnd
is omitted,substring()
extracts characters to the end of the string.
(如果indexEnd是被省略的,substring()将提取字符直到字符串的结束。) - If
indexStart
is equal toindexEnd
,substring()
returns an empty string.
(如果indexStart等于indexEnd,substring()将返回一个空的字符串。) - If
indexStart
is greater thanindexEnd
, then the effect ofsubstring()
is as if the two arguments were swapped; See example below.(如果indexStart大于indexEnd,效果相当于两个参数调换;示例在下面。)
- If
Note: Any argument value that is less than 0 or greater than
stringName.length
is treated as if it were 0 andstringName.length
respectively. Any argument value that isNaN
is treated as if it were 0.
任何小于0或大于stringName.length
的参数值将被视为0或stringName.length
。任何NaN
的参数值都将被视为0。
示例
Using substring()
The following example uses substring()
to display characters from the string 'Mozilla'
:
下面的示例使用substring()从字符串'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));
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);
Difference between substring()
and substr()
There's a subtle difference between the substring()
and [substr()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/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"
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 (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()
.