检查字符串是否包含连续的一对数字

本文关键字:数字 连续 字符串 是否 包含 检查 | 更新日期: 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