还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。
No. | 内容链接 |
---|---|
1 | Openlayers 【入门教程】 - 【源代码+示例300+】 |
2 | Leaflet 【入门教程】 - 【源代码+图文示例 150+】 |
3 | Cesium 【入门教程】 - 【源代码+图文示例200+】 |
4 | MapboxGL【入门教程】 - 【源代码+图文示例150+】 |
5 | 前端就业宝典 【面试题+详细答案 1000+】 |
JavaScript提供了多种方法来截取字符串。以下是这些方法的详细介绍及代码示例:
-
slice()
- 语法:
string.slice(start[, end])
- 参数:
start
: 必需,指定开始截取的位置。可以是正数(从左向右计数)或负数(从右向左计数,即倒数)。负数将被转换为其相对于字符串长度的正数索引。end
: 可选,指定停止截取的位置(但不包括该位置的字符)。同样可以是正数或负数。未提供时,默认截取到字符串末尾。
let str = "Hello, world!"; let sliced = str.slice(1, 5); // "ello" let slicedFromEnd = str.slice(-6, -1); // "world"
- 语法:
-
substring()
- 语法:
string.substring(start[, end])
- 参数:
start
: 必需,指定开始截取的位置。必须是非负整数,超出字符串长度时按最大有效索引处理。end
: 可选,指定停止截取的位置(但不包括该位置的字符)。如果省略或者大于字符串长度,截取到字符串末尾。如果start
大于end
,它们会被交换。
let str = "Hello, world!"; let substr = str.substring(½, 6); // ", wor" let substrToEnd = str.substring(7); // "d!"
- 语法:
-
substr()
- 注意:
substr()
方法虽然在一些旧文档和遗留代码中可见,但它在现代浏览器中已被弃用,建议不再使用。这里仅作参考。 - 语法:
string.substr(start[, length])
- 参数:
start
: 必需,指定开始截取的位置。可以是正数(从左向右计数)或负数(从右向左计数,即倒数)。负数将被转换为其相对于字符串长度的正数索引。length
: 可选,指定要截取的字符数量。如果省略或者超出字符串剩余长度,则截取到字符串末尾。
let str = "Hello, world!"; let substrValue = str.substr(1, 4); // "ello" let substrFromEnd = str.substr(-6); // "world!"
- 注意:
-
match()
- 语法:
string.match(regexp)
- 参数:
regexp
: 必需,一个正则表达式对象。如果需要截取符合特定模式的部分,可以使用此方法。
let str = "The quick brown fox jumps over the lazy dog."; let matched = str.match(/\b\w+\b/g); // ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"]
match()
返回一个包含匹配结果的数组,如果需要截取单个匹配项,可以使用非全局匹配:let str = "Hello, world!"; let greeting = str.match(/Hello/)[0]; // "Hello"
- 语法:
-
其他辅助方法
-
split()
:通过指定分隔符将字符串分割成多个子串,返回一个数组。let str = "apple,banana,orange"; let parts = str.split(","); // ["apple", "banana", "orange"]
-
charAt()
:返回指定索引位置的单个字符。let str = "Hello, world!"; let firstChar = str.charAt(0); // "H"
-
charCodeAt()
:返回指定索引位置字符的 Unicode 编码。let str = "Hello, world!"; let code = str.charCodeAt(0); // 72 (对应字符 'H')
-
indexOf()
和lastIndexOf()
:分别查找子字符串在主字符串中首次出现和最后一次出现的位置,返回索引值,未找到时返回 -1。这些方法可以帮助确定截取范围。let str = "Hello, world! Hello again."; let firstIndex = str.indexOf("Hello"); // 0 let lastIndex = str.lastIndexOf("Hello"); // 7
-
模板字面量(Template literals):用于创建多行字符串和内插表达式,虽然不是直接的截取方法,但在拼接或展示特定片段时非常有用。
let name = "Alice"; let message = `Hello, ${name}!`; // "Hello, Alice!"
-
总结来说,slice()
, substring()
, 和 substr()
用于根据索引来截取字符串,而 match()
则基于正则表达式进行模式匹配。此外,还有其他辅助方法如 split()
, charAt()
, charCodeAt()
, indexOf()
, lastIndexOf()
,以及模板字面量,它们在处理字符串时各有用途,可以配合使用以实现更复杂的字符串截取需求。