为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

青春有我 2019-12-25 15:36:44
除非缺少明显的内置方法,否则在字符串中获取字符串的第n次出现的最快方法是什么?我意识到我可以通过在每次循环迭代时更新其开始索引来循环IndexOf方法。但是这样做对我来说似乎是浪费。
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

您确实可以使用正则表达式/((s).*?){n}/来搜索substring的第n次出现s。


在C#中,它可能看起来像这样:


public static class StringExtender

{

    public static int NthIndexOf(this string target, string value, int n)

    {

        Match m = Regex.Match(target, "((" + Regex.Escape(value) + ").*?){" + n + "}");


        if (m.Success)

            return m.Groups[2].Captures[n - 1].Index;

        else

            return -1;

    }

}

注意:我已经添加Regex.Escape到原始解决方案中,以允许搜索对正则表达式引擎具有特殊含义的字符。


查看完整回答
反对 回复 2019-12-25
  • 3 回答
  • 0 关注
  • 784 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信