检查字符串是否包含连续的一对数字
本文关键字:数字 连续 字符串 是否 包含 检查 | 更新日期: 2023-09-27 18:26:12
我有一个列表。我想检查列表[I]是否包含字符串"6 1"。但此代码认为6 13 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
}
}
但此代码认为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
}
}
}
另请参阅:
- 在较长序列中查找子序列
- 在IEnumerable<T>使用Linq