猿问

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

除非缺少明显的内置方法,否则在字符串中获取字符串的第n次出现的最快方法是什么?


我意识到我可以通过在每次循环迭代时更新其开始索引来循环IndexOf方法。但是这样做对我来说似乎是浪费。


青春有我
浏览 827回答 3
3回答

红糖糍粑

您确实可以使用正则表达式/((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到原始解决方案中,以允许搜索对正则表达式引擎具有特殊含义的字符。
随时随地看视频慕课网APP
我要回答