当前位置: 首页 > 知识库问答 >
问题:

获取字符串中第n次出现的索引

诸葛亮
2023-03-14

我正在尝试编写一个函数,从字符串中返回特定字符特定出现的索引。但是,我只能让它成功返回第一个或第二个索引。我的函数如下:

function getIndex(str,char,n) {
    return str.indexOf(char, str.indexOf(char) + n-1);
}

输入这些测试仅适用于前2:

getIndex('https://www.example.example2.co.uk','.',2) // successfully returns 19
getIndex('https://www.example.example2.co.uk','.',1) // successfully returns 11
getIndex('https://www.example.example2.co.uk','.',3) // unsuccessfully returns 19

有没有人知道这如何能适用于两个以上的实例?我如何使用它的一个例子是得到以下内容:

var str = 'https://www.example.example2.co.uk';
str.substring(31); // returns .uk
str.substring(28, 31); // returns .co

谢谢你的帮助。

共有3个答案

冷俊健
2023-03-14
const search = '.';
const indexOfAll = (arr, val) => arr.reduce((acc, curr, i) => (curr === val ? [...acc, i] : acc), []);

indexOfAll(Array.from('https://www.example.example2.co.uk'), search);
=> [ 11, 19, 28, 31 ]
常朗
2023-03-14

在代码中,您没有指定第 n 次出现

str.indexOf(char, str.indexOf(char) + n-1);

在这里,您正在尝试跳过 str.indexOf(字符) n-1 个字符并继续搜索 尝试此函数

function getIndex(str,char,n) {
    return str.split('')
            .map((ch,index)=>ch===char?index:-1)
            .filter(in=>in!=-1)[n-1];
}

>

  • 说字符串是你好,你正在寻找第二个l

    将字符串拆分成字符[H,e,l,l,0]

    如果这是您要寻找的字符,请将它们映射到索引[-1,-1,2,3,-1]

    过滤所有-1[2,3]

    使用 n-1 取第 2 个索引,即 3

  • 谢志用
    2023-03-14

    您可以使用拆分切片

    逻辑

    首先您的字符串char拆分,然后使用切片将拆分值连接到第n次出现。然后简单地与char连接。它的长度将是您的答案。

    检查下面。

    function getIndex(str, char, n) {
      return str.split(char).slice(0, n).join(char).length;
    }
    
    console.log(getIndex('https://www.example.example2.co.uk', '.', 2)) // returns 19
    console.log(getIndex('https://www.example.example2.co.uk', '.', 1)) // returns 11
    console.log(getIndex('https://www.example.example2.co.uk', '.', 3)) // returns 28
     类似资料:
    • 问题内容: 我想用这样的东西来获取发生的开始位置: 你会怎么做? 问题答案:

    • 我想用这样的东西来获得出现的起始位置: 你会怎么做?

    • 问题内容: 我想替换字符串中第n个出现的子字符串。 一定有什么我想做的事情是 最简单,最Python化的方法是什么? 为什么不重复: 我不想在这种方法中使用正则表达式,而我发现的类似问题的大多数答案只是正则表达式剥离或真正复杂的功能。我真的想要尽可能简单而不是正则表达式的解决方案。 问题答案: 我使用简单的函数,该函数列出所有出现的事件,选择第n个位置,并使用它将原始字符串分成两个子字符串。然后,

    • 问题内容: 我有一个字符串,它是html页面的完整内容,我正在尝试查找的第二次出现的索引。有人对如何实现这一目标有任何建议吗? 问题答案: 这是一个好玩的镜头;)

    • 我有很多这样的字符串: 我想拆分这些字符串,使其如下所示: 然后,这些将被添加到数据集中并在以后进行分析。 我遇到的问题是,如果我使用以下代码: 它会将它们分裂两次;我只想在第二次出现:时将其拆分一次。 我该怎么做呢?

    • 问题内容: 给定分隔符的第n次出现后,是否存在Python方式来拆分字符串? 给定一个字符串: 它应分为(第二次出现后,定界符为“ _”): 还是实现此目的的唯一方法是计数,拆分和合并? 问题答案: 似乎这是最易读的方式,替代方法是regex)