5

たとえば、コンピューター部品の材料リストからの多くの異なる部品番号でいっぱいのテキスト ボックスにある場合、常に 1 種類の cat5 ケーブルのみが必要であり、2 種類の異なる種類が表示された場合は、ユーザーに警告します。cat5 ケーブルの部品番号は、cat5PART#1、cat5PART#2、および cat5PART#3 です。そのため、cat5 の部品番号が 1 つしか表示されない場合は心配ありませんが、異なるタイプが 2 つ以上表示されるとすぐに警告します。バリエーションごとに 3 回手動で簡単に書き出すこともできますが、パーツのリストが大きくなると、時間がかかり、間違いのリスクが高くなります。さらに、プログラマーがこのタイプの関数をどのように処理するかを知りたいです。名前もわからないのでググってみてもわかりませんが、

2つが検出された場合だけでなく、3つすべての部分が検出された場合にのみ警告するため、明らかに機能しない私のコードの例を以下に示します。& と | のいくつかのバリエーションを使用すると思います。それともまったく違うものですか?

基本的に、大規模に書き出す必要はありません

パート 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 に答える