📌  相关文章
📜  如何在 JavaScript 中获得第 n 次出现的字符串?(1)

📅  最后修改于: 2023-12-03 15:08:39.544000             🧑  作者: Mango

如何在 JavaScript 中获得第 n 次出现的字符串?

在 JavaScript 中,我们可以使用正则表达式和 String.prototype.match() 方法来获得字符串中特定子字符串的所有出现。

String.prototype.match()

String.prototype.match() 方法使用正则表达式搜索字符串,并返回匹配结果的数组。

例如:

const str = 'Hello World!';
const matches = str.match(/o/g);
console.log(matches); // Output: ["o", "o"]

在上面的例子中,我们使用正则表达式 /o/g 搜索字符串 str 并返回匹配结果的数组。

获得第 n 次出现的子字符串

为了获得字符串中第 n 次出现的子字符串,我们可以将要搜索的子字符串放在正则表达式中,然后找到数组中的第 n 个匹配项。

例如,要查找字符串中第二个匹配项的子字符串:

const str = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';
const matches = str.match(/the/gi);
const nthMatch = matches[1];
console.log(nthMatch); // Output: "the"

在上面的例子中,我们使用正则表达式 /the/gi 搜索字符串 str 并将结果存储在数组 matches 中。 然后,我们可以通过访问数组中的第二个元素来获得第二个匹配项的子字符串。

代码实现

下面是一个获得字符串中第 n 次出现的子字符串的示例函数:

function getNthMatch(str, subStr, n) {
  const regex = new RegExp(subStr, 'g');
  const matches = str.match(regex);
  if(matches && matches.length >= n) {
    return matches[n - 1];
  }
  return null;
}

该函数接受三个参数:要搜索的字符串 str,要查找的子字符串 subStr 和要返回的第 n 个匹配项。

函数通过创建一个新的正则表达式对象来使用 subStr 搜索 str。 然后,它存储所有匹配项的数组,并检查其长度是否大于等于 n。 如果是这样,则返回数组中的第 n 个元素;否则,返回 null

使用该函数,我们可以获得字符串中第 n 次出现的子字符串,例如:

const str = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';
const nthMatch = getNthMatch(str, /the/gi, 2);
console.log(nthMatch); // Output: "the"

在上面的例子中,我们使用函数 getNthMatch() 获得字符串中第二个匹配项的子字符串。