我有一个清单。我想检查列表[i]是否包含字符串" 6 1"。但是这段代码认为 6 1 3 24 31 35包含" 6 1"。它的错误。
6 13 24 31 35
1 2 3 6 1
stringCheck = "6 1";
List<string> list = new List<string>();
list.Add("6 13 24 31 35");
list.Add("1 2 3 6 1");
for (int i=0; i<list.Count; i++)
{
if (list[i].Contains(stringCheck)
{
// its return me two contains, but in list i have one
}
}
答案 0 :(得分:0)
但是这段代码认为6 13 24 31 35包含“6 1”。它的错误。 [...]
List<string> list = new List<string>(); list.Add("6 13 24 31 35"); list.Add("1 2 3 6 1");
不,这是真的,因为你处理的是字符序列,而不是数字序列,所以你的数字被视为字符。
如果您真的在使用数字,为什么不在为您的列表选择的数据类型中反映出来?:
// using System.Linq;
var xss = new int[][]
{
new int[] { 6, 13, 24, 31, 35 },
new int[] { 1, 2, 3, 6, 1 }
};
foreach (int[] xs in xss)
{
if (xs.Where((_, i) => i < xs.Length - 1 && xs[i] == 6 && xs[i + 1] == 1).Any())
{
// list contains a 6, followed by a 1
}
}
或者如果您更喜欢更程序化的方法:
foreach (int[] xs in xss)
{
int i = Array.IndexOf(xs, 6);
if (i >= 0)
{
int j = Array.IndexOf(xs, 1, i);
if (i + 1 == j)
{
// list contains a 6, followed by a 1
}
}
}
另见: