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

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
您確實(shí)可以使用正則表達(dá)式/((s).*?){n}/來(lái)搜索substring的第n次出現(xiàn)s。
在C#中,它可能看起來(lái)像這樣:
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到原始解決方案中,以允許搜索對(duì)正則表達(dá)式引擎具有特殊含義的字符。
- 3 回答
- 0 關(guān)注
- 857 瀏覽
添加回答
舉報(bào)
0/150
提交
取消