【问题标题】:C# Checking all of the values in a list [duplicate]C#检查列表中的所有值[重复]
【发布时间】:2015-01-03 12:20:45
【问题描述】:

我创建了一个list<string> machineTypes 并用数据填充它。我想检查该集合是否包含任何字符串组合。我最初的计划是使用 for 循环,但显然我无法在 for 循环中间检查多个索引。

for (int i = 0; i < machineTypes.Count; i++)
            {
                if (machineTypes[i] == "W")
                //do stuff
                if ((machineTypes[i] == "P") && (machineTypes[i] == "W") && (machineTypes[i] == "A") && (machineTypes[i] == "C"))
                    //do stuff
            }

所以我正在寻找有关执行此操作的最佳方法的建议。我想我可以使用String.Join,但我想知道是否有更优雅的方式。

【问题讨论】:

  • machineTypes[i] 怎么可以同时是PWAC...?
  • 您能否提供更多关于 machineTypes 内每个项目中的数据的概述,以及更好地解释您要检查的条件?
  • 请定义“字符串组合”。你预计什么输入?您实际上在寻找什么条件?
  • 你的意思是machineTypes.Contains("P") &amp;&amp; machineTypes.Contains("W") &amp;&amp; ... 吗?
  • 举个例子:输入,预期输出。这将是一个好的开始。

标签: c# list


【解决方案1】:

也许不太优雅 - 但这样的事情可能会有所帮助

for (int i = 0; i < machineTypes.Count; i++)
            {
                int jj=i;
                if (machineTypes[i] == "W")
                //do stuff
                if (jj< machineTypes.Count-4)
                if ((machineTypes[jj] == "P") && (machineTypes[jj+1] == "W") && (machineTypes[jj+2] == "A") && (machineTypes[jj+3] == "C"))
                    //do stuff
            }

我刚刚创建了一个新的 var jj,以防您想增加或更改其值,而不更改 i 值。请注意if (jj&lt; machineTypes.Count-4) 条件检查,看看您可以安全地使用jj+3 作为索引。

【讨论】:

  • 这比它需要的复杂得多
  • 是的,我知道,但那是为了便于理解和更复杂的增强。问题不太清楚,所以允许使用jj++等
  • 啊,不幸的是,我不知道有多少值或该值将存储在什么索引处。这是一个有趣的技术。我会给你一个 +1 的努力。
  • 我不知道这段代码与问题有什么关系(我也不明白)。你肯定需要一个扭曲的大脑来破解它。
  • 不知道有多少个值,这变得非常困难。除非您知道有多少值 - 在某个阶段(也许当您找到所有值时) - 那么您仍然可以使用 if ( (index&lt;count) ? list[index]=='W' : false) 之类的东西检查您的索引,以便在每次比较之前检查您的索引。在这种情况下,您应该在每个 if 语句中只进行一个比较,然后级联或重复它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
相关资源
最近更新 更多