在 JavaScript 中获取字符串中最后一次出现之后的部分
Get the value of a String after last Slash in JavaScript
要获取字符串中最后一个字符出现之后的部分:
- 使用该
String.lastIndexOf()
方法获取字符串中 lash 出现的索引。 - 使用
String.slice()
方法获取字符串中最后一次出现之后的部分。
索引.js
const str = '/hello/world/index.html'; const afterLastSlash = str.slice(str.lastIndexOf('/') + 1); console.log(afterLastSlash); // 👉️ index.html
String.slice方法提取字符串的一部分并将其返回,而不修改原始字符串。
该String.slice()
方法采用以下参数:
姓名 | 描述 |
---|---|
起始索引 | 要包含在返回的子字符串中的第一个字符的索引 |
结束索引 | 要从返回的子字符串中排除的第一个字符的索引 |
当只有一个参数传递给该String.slice()
方法时,切片会到达字符串的末尾。
索引.js
const str = 'bobbyhadz.com'; console.log(str.slice(5)); // 👉️ hadz.com console.log(str.slice(10)); // 👉️ com
我们使用
String.lastIndexOf()
方法获取/
字符串中最后一个斜杠字符的索引。
索引.js
const str = '/hello/world/index.html'; console.log(str.lastIndexOf('/')); // 👉️ 12 console.log(str.lastIndexOf('/') + 1); // 👉️ 13
我们不想在字符串中包含该字符的最后一次出现,因此我们将其添加1
到索引中。
处理找不到角色的场景
请注意,如果未在字符串中找到该字符,该lastIndexOf
方法将返回。-1
如果字符串中不存在该字符,您可以返回整个字符串,那么您无需执行任何操作。
如果在找不到字符时需要返回空字符串,请使用语句if
。
索引.js
const str = '/hello/world/index.html'; let result = ''; const char = '@'; if (str.lastIndexOf(char) !== -1) { result = str.slice(str.lastIndexOf(char) + 1); } console.dir(result); // 👉️ ""
我们将result
变量初始化为空字符串。
如果该lastIndexOf()
方法没有返回-1
,则该字符包含在字符串中,我们将变量重新分配给结果。
创建一个可重用的函数
如果您必须这样做,通常会定义一个可重用的函数。
索引.js
function afterLastOccurrence(string, char) { return string.slice(string.lastIndexOf(char) + 1); } // 👇️ index.html console.log(afterLastOccurrence('/hello/world/index.html', '/')); // 👇️ com console.log(afterLastOccurrence('bobby,hadz,com', ',')); // 👇️ com console.log(afterLastOccurrence('bobby_hadz_com', '_'));
另一种可能更简单的方法是使用split
和pop
方法。
使用 split() 获取字符串中最后一次出现之后的部分
这是一个两步过程:
- 使用该
String.split()
方法在每次出现字符时拆分字符串。 - 使用
String.pop()
方法获取最后一次出现后的字符串部分。
索引.js
const str = 'hello/world/index.html'; const afterLastSlash = str.split('/').pop(); console.log(afterLastSlash); // 👉️ index.html
代码示例返回字符串中最后一个斜线之后的子字符串。
我们使用
String.split()
方法在正斜杠字符上拆分字符串/
。
这将返回一个不带斜杠/
分隔符的字符串数组。
索引.js
const str = 'hello/world/index.html'; const splitOnSlash = str.split('/'); console.log(splitOnSlash); // 👉️ ['hello', 'world', 'index.html']
我们调用Array.pop()
方法从数组中移除并返回最后一个元素。
索引.js
const str = 'hello/world/index.html'; const afterLastSlash = str.split('/').pop(); console.log(afterLastSlash); // 👉️ index.html
如果您关心性能,您会使用第一种方法,即使除非您使用非常大的字符串,否则差异可以忽略不计。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: