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

时间:2014-10-11 16:49:10

标签: c# string

我有一个清单。我想检查列表[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
           }
    }

1 个答案:

答案 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
        }
    }
}

另见: