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包含至少三个冒号,否则添加错误处理.
你可以这样写:
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)