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

如何获取字符串中的第n次出现?

穆宾白
2023-03-14

我想用这样的东西来获得ABC第2次出现的起始位置:

var string = "XYZ 123 ABC 456 ABC 789 ABC";
getPosition(string, 'ABC', 2) // --> 16

你会怎么做?

共有3个答案

夔宏深
2023-03-14

根据kennebec的答案,我创建了一个原型函数,如果没有找到第n个匹配项,它将返回-1,而不是0。

String.prototype.nthIndexOf = function(pattern, n) {
    var i = -1;

    while (n-- && i++ < this.length) {
        i = this.indexOf(pattern, i);
        if (i < 0) break;
    }

    return i;
}
谷梁德容
2023-03-14

您还可以使用字符串 indexOf 而不创建任何数组。

第二个参数是开始查找下一个匹配项的索引

function nthIndex(str, pat, n){
    var L= str.length, i= -1;
    while(n-- && i++<L){
        i= str.indexOf(pat, i);
        if (i < 0) break;
    }
    return i;
}

var s= "XYZ 123 ABC 456 ABC 789 ABC";

nthIndex(s,'ABC',3)

/*  returned value: (Number)
24
*/
方兴旺
2023-03-14
const string = "XYZ 123 ABC 456 ABC 789 ABC";

function getPosition(string, subString, index) {
  return string.split(subString, index).join(subString).length;
}

console.log(
  getPosition(string, 'ABC', 2) // --> 16
)
 类似资料:
  • 问题内容: 我想用这样的东西来获取发生的开始位置: 你会怎么做? 问题答案:

  • 我正在尝试编写一个函数,从字符串中返回特定字符特定出现的索引。但是,我只能让它成功返回第一个或第二个索引。我的函数如下: 输入这些测试仅适用于前2: 有没有人知道这如何能适用于两个以上的实例?我如何使用它的一个例子是得到以下内容: 谢谢你的帮助。

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

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

  • 问题内容: 也就是说,如何从字符串中找到第n个出现的字符/字符串的索引? 例如: “ / folder1 / folder2 / folder3 / ”。在这种情况下,如果我要求第三次出现斜杠(/),它会出现在folder3之前,并且我希望返回该索引位置。我的实际意图是从字符的第n次出现开始对它进行子串化。 Java API中是否有任何方便/易于使用的方法,还是我们需要自己编写一个小的逻辑来解决这

  • 问题内容: 是否有一种简单的方法可以从UILabel中的给定行中获取(或简单地显示)文本? 我的UILabel正确显示了我的文本并将其布置得很漂亮,但偶尔我需要能够仅显示某些行,但是显然我需要知道UILabel如何放置所有东西来做到这一点。 我知道可以使用子字符串轻松完成此操作,但是我需要知道该行的起点和终点。 或者,如果UILabel的框架存在某种偏移,则可以滚动UILabel,并隐藏我不想看到