5

例如,如果在一个充满了计算机零件材料列表中许多不同零件编号的文本框中,我在任何给定时间只需要一种类型的 cat5 电缆,并且如果看到两种不同的类型,则警告用户。cat5 电缆部件号可能是:cat5PART#1、cat5PART#2 和 cat5PART#3。因此,如果只看到一个 cat5 零件编号,请不要担心,但一旦看到两种或更多不同类型,就会发出警告。我可以很容易地为每个变体手动写出三个不同的时间,但是在更大的零件列表中,它会花费更长的时间并且可能会出错。另外,我很想知道程序员如何处理这种类型的函数。我也不知道它叫什么,所以我不知道如何用谷歌搜索它,

我的代码示例显然不起作用,因为它只会在检测到所有三个部分时发出警告,而不仅仅是检测到两个部分如下。我假设我会使用 & 和 | 的一些变体 或者可能是完全不同的东西?

基本上我不想写出更大的范围

如果包含第 1 部分和第 2 部分

如果包含第 1 部分和第 3 部分

如果包含第 2 部分和第 3 部分

谢谢你。

    if ((textBox2.Text.Contains("PART#1"))
      && (textBox2.Text.Contains("PART#2"))
      &&  (textBox2.Text.Contains("PART#3")))
              {
            MessageBox.Show("2 types of cat5 part numbers seen at the same time");
              }
4

4 回答 4

6

你可以试试这个:

string[] parts = new [] {"PART#1", "PART#2", "PART#3"};
int count = parts.Count(s => textBox2.Text.Contains(s));
if (count >= 2) ...
于 2012-01-20T03:55:59.743 回答
4

您可以使用 Linq /Count()来测试您要测试的至少 x 个字符串是否包含在textBox2.Text

string[] parts = { "PART#1", "PART#2", "PART#3" };
if(parts.Count(s=> textBox2.Text.Contains(s)) >= 2)
{
   MessageBox.Show("2 types of cat5 part numbers seen at the same time");
}
于 2012-01-20T03:53:39.633 回答
1

本质上,这个问题是通过稍微不同的设计来解决的。

你真正想要的是对一些输入运行某种规则验证,所以我可能会创建一些更通用的东西,然后每个规则将包含一组它希望检查的很好的属性。然后,您可以从处理数据的通用“针对输入运行规则”阶段调用它。

也许这听起来有点过头了,但总的来说,做这样的事情很好,这样你就可以为变化做好准备了。

最后(在特定规则本身)你显然会有一个有点像你的实现,但可能以更短的方式编写,就像 BrokenGlass 所展示的那样。

于 2012-01-20T03:57:52.637 回答
0

将每个字符串添加到 a 中,然后使用语句List<string>遍历每个字符串。foreach

于 2012-01-20T03:54:47.833 回答