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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

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

提问于
用户回答回答于

这基本上是你需要做的--或者至少,这是最简单的解决方案。你将“浪费”的是n个方法调用的成本--如果你考虑一下,实际上不会检查任何情况两次。

用户回答回答于

你真的可以使用正则表达式/((s).*?){n}/查找子字符串的第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;
    }
}

扫码关注云+社区