除非缺少明顯的內置方法,否則在字符串中獲取字符串的第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到原始解決方案中,以允許搜索對正則表達式引擎具有特殊含義的字符。
- 3 回答
- 0 關注
- 859 瀏覽
添加回答
舉報
0/150
提交
取消