对于每个string.IndexOf(char)错误
本文关键字:char 错误 IndexOf 于每个 string | 更新日期: 2023-09-27 17:49:27
var str = "GB29NWBK60161331926819"
foreach (var item in str.ToCharArray())
{
Debug.WriteLine(str.IndexOf(item));
}
给出输出
0123.451789108101313103.2819103
I was expected
0 12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
这是一个错误还是我的假设不正确?
它给出字符串中第一个出现的索引。
查看你的输入字符串,当它到达1时,它给你索引10,当它到达下一个1时,它再次给你索引10。
这是文档对这个方法的说明:
报告指定字符串在此实例中第一次出现的从零开始的索引。
EDIT: ElementAt(int index)
期望索引。使用它会在第一个字母G
时崩溃。它会接受它的UTF-16-Code(71)并跳出边界。
你的期望会被满足:
var str = "GB29NWBK60161331926819";
for (int i = 0; i < str.Length; i++)
{
Debug.WriteLine(i);
}
您的假设是不正确的,因为函数返回字符串中匹配的第一个事件,如果函数不匹配,它将返回-1
期望的输出只有对于由唯一字符组成的字符串才是正确的。
这绝对不是一个bug,因为你的字符串有重复项。IndexOf
将不区分GB
中的B
和BWBK
部分中的B
,为您提供字符串中字符的第一个索引。