我有一个字符串数组lines
,其中一个项可能包含值Mister
或Misses
。
var lines = "3.3. 3 - 3 88C Mister Molitor D For Ne Les Text".Split(' ');
Console.WriteLine(lines.Contains("Mister") || lines.Contains("Misses"));
返回true
。现在,我想使用
Mister
的索引Misses
var index = lines.IndexOf("Mister");
(为了简单起见,我没有将Misses
的代码放在这里)
但是,索引总是是-1
(尽管数组中存在项目)。所以我认为必须有不同的尝试(我甚至添加了ToLower()
,但这不是原因,因为lines.Contains()
否则会返回false):
var index = lines.FindIndex(x => x.ToLower() == "mister");
但仍然...... index = -1
。这真让我抓狂!我们肯定包含该项目的数组,但我找不到索引。
答案 0 :(得分:3)
以下是true
lines.Contains("Mister") || lines.Contains("Misses")
因为您的字符串文字包含单词Misses
。话虽如此,当您IndexOf
上的lines
作为参数传递Mister
时,您获得-1
,因为Mister
未包含在lines
中1}}。
答案 1 :(得分:1)
假设你的文字中包含" Mister"在某处;以下代码应该有效:
string[] lines = "3.3. 3 - 3 88C Misses Molitor D For Ne Les Text".Split(' ');
Console.WriteLine(lines.Contains("Mister") || lines.Contains("Misses"));
var idx = Array.FindIndex(lines, l => l == "Misses");
Console.WriteLine(idx);
答案 2 :(得分:0)
这段代码对我有用。 Pos的值为5. containsOne为true且containsTwo为false。
var lines = "3.3. 3 - 3 88C Mister Molitor D For Ne Les Text".Split(' ');
var pos = Array.FindIndex(lines, c => c.Equals("Mister"));
var containsOne = lines.Contains("Mister") || lines.Contains("Misses");
var containsTwo = lines.Contains("Mister") && lines.Contains("Misses");
有关FindIndex方法的更多信息,请查看this page on MSDN