对于每个string.IndexOf(char)错误?

MrB*_*liz -3 .net c# string indexof .net-4.5

var str = "GB29NWBK60161331926819"

foreach (var item in str.ToCharArray())
{
    Debug.WriteLine(str.IndexOf(item));
}
Run Code Online (Sandbox Code Playgroud)

给出输出

0 1 2 3 4 5 1 7 8 9 10 8 10 13 13 10 3 2 8 19 10 3

我在期待

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

是这个还是一个bug还是我的假设不正确?

Mon*_*Zhu 7

它为您提供字符串中第一次出现的索引.

查看输入字符串,当它到达1时它会给你索引10,当它到达下一个1时,它会再次给你.

这是文档对此方法所说的内容:

报告此实例中第一次出现的指定字符串的从零开始的索引.

编辑:ElementAt(int index)期待一个索引.使用它会在第一个字母崩溃G.它需要UTF-16-Code,它是71并突破界限.

你的期望会因此而满足:

var str = "GB29NWBK60161331926819";

for (int i = 0; i < str.Length; i++)
{
    Debug.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)