除非缺少明显的内置方法,否则在字符串中获取字符串的第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 关注
- 825 浏览
添加回答
举报
0/150
提交
取消