如何在c#中使用foreach获取正确的文本字符索引
c#
我想使用 forach 循环获取字符索引。
var text = "aaab";
foreach (var item in text)
{
Console.WriteLine(text.IndexOf(item));
}
输出为:0 0 0 3
但我期望:0 1 2 3
所以我的其他操作出错了。为什么 indexOf() 方法没有得到正确的索引?
回答
String.IndexOf 方法
报告此实例中指定 Unicode 字符或字符串第一次出现的从零开始的索引。如果在此实例中找不到字符或字符串,则该方法返回 -1。
来源:https : //docs.microsoft.com/en-us/dotnet/api/system.string.indexof
即使“a”出现 3 次,“a”的第一次出现始终为 0。在这种情况下,您的foreach-loop 相当于编写:
var text = "aaab";
Console.WriteLine(text.IndexOf("a"));
Console.WriteLine(text.IndexOf("a"));
Console.WriteLine(text.IndexOf("a"));
Console.WriteLine(text.IndexOf("b"));
但是该方法确实有重载,可以让您指定startIndex开始搜索。