substring()
方法返回一部分为
string
在起始和结束索引之间,或到字符串末尾。
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
str.substring(indexStart[, indexEnd])
indexStart
The index of the first character to include in the returned substring.
indexEnd
可选
The index of the first character to exclude from the returned substring.
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
被省略,
substring()
extracts characters to the end of the string.
indexStart
等于
indexEnd
,
substring()
returns an empty string.
indexStart
大于
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()
以下范例使用
substring()
to display characters from the string
'Mozilla'
:
let 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
property
以下范例使用
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 let anyString = 'Mozilla' let anyString4 = anyString.substring(anyString.length - 4) console.log(anyString4) // Displays 'zilla' the last 5 characters let anyString = 'Mozilla' let anyString5 = anyString.substring(anyString.length - 5) console.log(anyString5)
substring()
and
substr()
There's a subtle difference between the
substring()
and
substr()
methods, so you should be careful not to get them confused.
The arguments of
substring()
represent the starting and ending indexes, while the arguments of
substr()
represent the starting index and the number of characters to include in the returned string.
Furthermore,
substr()
is considered a
legacy feature in ECMAScript
and could be removed from future versions, so it is best to avoid using it if possible.
let text = 'Mozilla' console.log(text.substring(2,5)) // => "zil" console.log(text.substr(2,3)) // => "zil"
substring()
and
slice()
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.
substring()
method swaps its two arguments if
indexStart
大于
indexEnd
, meaning that a string is still returned. The
slice()
method returns an empty string if this is the case.
let 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
,
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"
见
slice()
page for more examples with negative numbers.
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 < 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()
.
| 规范 |
|---|
|
ECMAScript (ECMA-262)
在该规范中的 String.prototype.substring 定义。 |
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
更新 GitHub 上的兼容性数据| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
substring
|
Chrome 1 | Edge 12 | Firefox 1 | IE 3 | Opera 3 | Safari 1 | WebView Android 1 | Chrome Android 18 | Firefox Android 4 | Opera Android 10.1 | Safari iOS 1 | Samsung Internet Android 1.0 | nodejs 0.1.100 |
完整支持
String
String.fromCharCode()
String.fromCodePoint()
String.prototype.anchor()
String.prototype.big()
String.prototype.blink()
String.prototype.bold()
String.prototype.charAt()
String.prototype.charCodeAt()
String.prototype.codePointAt()
String.prototype.concat()
String.prototype.endsWith()
String.prototype.fixed()
String.prototype.fontcolor()
String.prototype.fontsize()
String.prototype.includes()
String.prototype.indexOf()
String.prototype.italics()
String.prototype.lastIndexOf()
String.prototype.link()
String.prototype.localeCompare()
String.prototype.match()
String.prototype.matchAll()
String.prototype.normalize()
String.prototype.padEnd()
String.prototype.padStart()
String.prototype.repeat()
String.prototype.replace()
String.prototype.replaceAll()
String.prototype.search()
String.prototype.slice()
String.prototype.small()
String.prototype.split()
String.prototype.startsWith()
String.prototype.strike()
String.prototype.sub()
String.prototype.substr()
String.prototype.substring()
String.prototype.sup()
String.prototype.toLocaleLowerCase()
String.prototype.toLocaleUpperCase()
String.prototype.toLowerCase()
String.prototype.toSource()
String.prototype.toString()
String.prototype.toUpperCase()
String.prototype.trim()
String.prototype.trimEnd()
String.prototype.trimStart()
String.prototype.valueOf()
String.prototype[@@iterator]()
String.raw()
Function
Object
Object.prototype.__defineGetter__()
Object.prototype.__defineSetter__()
Object.prototype.__lookupGetter__()
Object.prototype.__lookupSetter__()
Object.prototype.hasOwnProperty()
Object.prototype.isPrototypeOf()
Object.prototype.propertyIsEnumerable()
Object.prototype.toLocaleString()
Object.prototype.toSource()
Object.prototype.toString()
Object.prototype.valueOf()
Object.setPrototypeOf()