【发布时间】:2017-05-12 07:45:22
【问题描述】:
我正在尝试从列表中获取已创建字符串的索引号。我有 500 个字符串数值的列表:
List<string> List = new List<string>();
所以我如果有一些输入字符串等于我的列表中的某个现有字符串,例如:
string numbStr = "54";
现在我想在列表中找到相等字符串的索引,字符串“54”的索引应该是索引 53。所以如果我的输入字符串值小于 101,我有正确的结果。如果输入值为字符串“54”,我在列表中找到相等的字符串“54”,则索引值为53,+1我得到了所需的索引,这样:
int index = List.FindIndex(x => x.StartsWith(numbStr));
但是,如果我的输入数字大于 101,例如 string numbStr = "308"; 索引结果是 517,“500”那一行实际上是 499 我得到了 901 等等。检查和计数的列表中的所有字符串都等于其索引按顺序排列用 shift -1 与字符串名称进行比较。
所以不确定这个错误结果的原因是什么,需要建议才能弄清楚。
列表看起来像这样,可能是因为我不确定空格:
123 b4 c1 nnn
124 b4 c1 nnn
125 b4 c1 nnn
126 b4 c1 nnn
【问题讨论】:
-
尝试使用“Equals”方法或==而不是“StartsWith”,看看它是否有效。这是因为,Starts with 可能导致任何顺序的多个结果,因此索引可能不准确
-
你是如何填充输入列表的?该列表是否已排序?
-
@Abhilash R Vankayala 你好,就像下面的答案一样,我这样得到 0
-
@un-lucky 你好,在循环中一一列出加载字符串,相当于显示或打印到文本文件中,一切都按顺序排列。当列表完成时,加载发生在此条件之前
-
如果你的
List<string>只有500个值,你的代码怎么能返回517或901之类的值呢?它应该返回的最大值是 500(即 499 + 1)。
标签: c# string linq list indexing