C#字符串中字符的第三个索引

Ice*_*shi 11 .net c# string indexing

是否有一个命令可以获取字符串中字符的第三个索引?例如:

error: file.ext: line 10: invalid command [test:)]
Run Code Online (Sandbox Code Playgroud)

在上面的句子中,我想要第3个冒号的索引,10个旁边的那个.我怎么能这样做?我知道string.IndexOf和string.LastIndexOf,但在这种情况下我想得到第三次使用时字符的索引.

Ric*_*ard 13

String.IndexOf会得到你的第一个索引,但有重载给出一个起点.因此,您可以使用第一个IndexOf加1 的结果作为下一个的起点.然后只需累积索引足够次数:

var offset = myString.IndexOf(':');
offset = myString.IndexOf(':', offset+1);
var result = myString.IndexOf(':', offset+1);
Run Code Online (Sandbox Code Playgroud)

除非您知道myString包含至少三个冒号,否则添加错误处理.


as-*_*cii 9

你可以这样写:

    public static int CustomIndexOf(this string source, char toFind, int position)
    {
        int index = -1;
        for (int i = 0; i < position; i++)
        {
            index = source.IndexOf(toFind, index + 1);

            if (index == -1)
                break;
        }

        return index;
    }
Run Code Online (Sandbox Code Playgroud)

编辑:显然你必须按如下方式使用它:

int colonPosition = myString.CustomIndexOf(',', 3);
Run Code Online (Sandbox Code Playgroud)