在 JavaScript 中获取字符串中最后一次出现之后的部分

在 JavaScript 中获取字符串中最后一次出现之后的部分

Get the value of a String after last Slash in JavaScript

要获取字符串中最后一个字符出现之后的部分:

  1. 使用该String.lastIndexOf()方法获取字符串中 lash 出现的索引。
  2. 使用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', '_'));

另一种可能更简单的方法是使用splitpop
方法。

使用 split() 获取字符串中最后一次出现之后的部分

这是一个两步过程:

  1. 使用该String.split()方法在每次出现字符时拆分字符串。
  2. 使用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

如果您关心性能,您会使用第一种方法,即使除非您使用非常大的字符串,否则差异可以忽略不计。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: