String.prototype.slice()
slice()
是 String
值的一个方法,它提取此字符串的一部分并将其作为新字符串返回,而不会修改原始字符串。
试一试
语法
js
slice(indexStart)
slice(indexStart, indexEnd)
参数
indexStart
-
要包含在返回的子字符串中的第一个字符的索引。
indexEnd
可选-
要从返回的子字符串中排除的第一个字符的索引。
返回值
一个包含提取的字符串部分的新字符串。
描述
slice()
从一个字符串中提取文本并返回一个新字符串。
slice()
提取直到但不包括 indexEnd
。例如,str.slice(4, 8)
提取第五个字符到第八个字符(索引为 4
、5
、6
和 7
的字符)
indexStart indexEnd ↓ ↓ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | | T | h | e | | m | i | r | r | o | r | m i r r _______________ ↑ Result
- 如果
indexStart >= str.length
,则返回一个空字符串。 - 如果
indexStart < 0
,则从字符串末尾开始计算索引。更正式地说,在这种情况下,子字符串从max(indexStart + str.length, 0)
开始。 - 如果省略
indexStart
、未定义或无法 转换为数字,则将其视为0
。 - 如果省略
indexEnd
或未定义,或者如果indexEnd >= str.length
,则slice()
提取到字符串的末尾。 - 如果
indexEnd < 0
,则从字符串末尾开始计算索引。更正式地说,在这种情况下,子字符串在max(indexEnd + str.length, 0)
结束。 - 如果在规范化负值后
indexEnd <= indexStart
(即indexEnd
表示在indexStart
之前的字符),则返回一个空字符串。
示例
使用 slice() 创建新字符串
以下示例使用 slice()
创建一个新字符串。
js
const str1 = "The morning is upon us."; // The length of str1 is 23.
const str2 = str1.slice(1, 8);
const str3 = str1.slice(4, -2);
const str4 = str1.slice(12);
const str5 = str1.slice(30);
console.log(str2); // he morn
console.log(str3); // morning is upon u
console.log(str4); // is upon us.
console.log(str5); // ""
使用带负索引的 slice()
以下示例使用带负索引的 slice()
。
js
const str = "The morning is upon us.";
str.slice(-3); // 'us.'
str.slice(-3, -1); // 'us'
str.slice(0, -1); // 'The morning is upon us'
str.slice(4, -1); // 'morning is upon us'
此示例从字符串末尾向后计数 11
以找到起始索引,并从字符串开头向前计数 16
以找到结束索引。
js
console.log(str.slice(-11, 16)); // "is u"
在这里,它从开头向前计数 11
以找到起始索引,并从末尾向后计数 7
以找到结束索引。
js
console.log(str.slice(11, -7)); // " is u"
这些参数从末尾向后计数 5
以找到起始索引,并从末尾向后计数 1
以找到结束索引。
js
console.log(str.slice(-5, -1)); // "n us"
规范
规范 |
---|
ECMAScript 语言规范 # sec-string.prototype.slice |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。