JS 截取字符串的方法

在前端开发中,经常会遇到需要对字符串进行截取的需求,比如显示文章摘要、截取用户名显示在页面上等等。本文将详细介绍在 JavaScript 中如何截取字符串,并给出一些实用的示例代码。
1. 使用 substr 方法
substr 方法可以从指定位置开始,截取指定长度的字符串。语法如下:
string.substr(start, length)
其中 start 是起始位置(从0开始),length 是要截取的长度。如果省略 length 参数,截取到字符串末尾。
示例代码如下:
let str = "Hello, World!";
let result = str.substr(7, 5);
console.log(result); // Output: World
这段代码中,从字符串 str 的第 7 个字符开始截取长度为 5 的子串,结果为 “World”。
2. 使用 substring 方法
substring 方法类似于 substr 方法,可以截取指定位置之间的子字符串。语法如下:
string.substring(start, end)
其中 start 是起始位置,end 是结束位置(不包括该位置的字符)。如果 start 大于 end,substring 会自动交换参数的位置。
示例代码如下:
let str = "Hello, World!";
let result = str.substring(7, 12);
console.log(result); // Output: World
这段代码中,从字符串 str 的第 7 个字符开始截取到第 12 个字符之前(即索引为 11)的子串,结果为 “World”。
3. 使用 slice 方法
slice 方法也可以用于截取字符串,与 substring 类似但更灵活。它可以接受负数作为参数,表示从字符串末尾开始计算位置。语法如下:
string.slice(start, end)
其中 start 是起始位置,end 是结束位置(不包括该位置的字符)。如果省略 end 参数,截取到字符串末尾。
示例代码如下:
let str = "Hello, World!";
let result1 = str.slice(7);
let result2 = str.slice(-6);
console.log(result1); // Output: World!
console.log(result2); // Output: World!
这段代码中,result1 截取了字符串 str 从第 7 个字符到末尾的子串,结果为 “World!”;result2 使用负数参数截取了最后 6 个字符,结果同样为 “World!”。
4. 使用 substring 和 indexOf 实现截取指定关键字之后的字符串
有时候我们需要截取指定关键字之后的字符串,可以通过结合 substring 和 indexOf 来实现。示例代码如下:
function getSubstringAfterKeyword(str, keyword) {
let index = str.indexOf(keyword);
if (index !== -1) {
return str.substring(index + keyword.length);
} else {
return "";
}
}
let str = "Hello, World! This is a sample text.";
let result = getSubstringAfterKeyword(str, "World");
console.log(result); // Output: ! This is a sample text.
这段代码定义了一个函数 getSubstringAfterKeyword,接受两个参数:原始字符串 str 和关键字 keyword,返回关键字之后的子串。在示例中,将 “World” 作为关键字传入函数,得到的结果为 “! This is a sample text.”。
5. 使用正则表达式截取字符串
正则表达式也是字符串截取的一种强大工具,可以满足更复杂的匹配需求。比如我们可以通过正则表达式来提取邮箱地址中的域名部分。示例代码如下:
function getDomainFromEmail(email) {
let match = email.match(/@(.+)/);
if (match) {
return match[1];
} else {
return "";
}
}
let email = "example@example.com";
let domain = getDomainFromEmail(email);
console.log(domain); // Output: example.com
这段代码定义了一个函数 getDomainFromEmail,使用正则表达式 /@(.+)/ 匹配邮箱地址中 @ 符号之后的部分作为域名。在示例中,将 “example@example.com” 作为邮箱地址传入函数,得到的结果为 “example.com”。
极客笔记