除非缺少明顯的內(nèi)置方法,否則在字符串中獲取字符串的第n次出現(xiàn)的最快方法是什么?我意識到我可以通過在每次循環(huán)迭代時更新其開始索引來循環(huán)IndexOf方法。但是這樣做對我來說似乎是浪費。
3 回答

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗 獲得超6個贊
您確實可以使用正則表達(dá)式/((s).*?){n}/來搜索substring的第n次出現(xià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;
}
}
注意:我已經(jīng)添加Regex.Escape到原始解決方案中,以允許搜索對正則表達(dá)式引擎具有特殊含義的字符。
- 3 回答
- 0 關(guān)注
- 866 瀏覽
添加回答
舉報
0/150
提交
取消