var str = "GB29NWBK60161331926819"
foreach (var item in str.ToCharArray())
{
Debug.WriteLine(str.IndexOf(item));
}
提供输出
0 1 2 3 4 五 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
这是错误还是我的假设不正确?
答案 0 :(得分:7)
它为您提供字符串中第一次出现的索引。
查看输入字符串,当它到达1时它会给你索引10,当它到达下一个1时它会再次给你。
这是Documentation对此方法所说的内容:
报告此实例中第一次出现指定字符串的从零开始的索引。
编辑:ElementAt(int index)
会期望一个索引。使用它会在第一个字母G
崩溃。它需要UTF-16-Code,它是71并突破界限。
你的期望会因此而得到满足:
var str = "GB29NWBK60161331926819";
for (int i = 0; i < str.Length; i++)
{
Debug.WriteLine(i);
}
答案 1 :(得分:1)
你的假设是不正确的,因为函数返回你的字符串中匹配的第一个出现,如果函数匹配nthing它将返回-1
答案 2 :(得分:1)
您的预期输出仅对由唯一字符组成的字符串有效。
这绝对不是一个错误,因为你的字符串有重复。 IndexOf
无法区分B
中的GB
和B
部分中的BWBK
,为您提供字符串中字符的第一个索引。