0

単語の配列があり、パターンに一致した単語を削除し、長さが 3 文字未満の各単語も削除したいと考えています。次のコードは、私が考えていたことを実行できますか? 前もって感謝します。

           foreach (Match mtch in mc )

           {
               string p = @"[A-Z,a-z,0-9]" ;

               if (Regex.IsMatch(mtch.Value, p)  || mtch.Length < 3 )
                {
                   continue;
                }
              else
              {
               filter.Add(mtch.Value);
              }
           }

|| の使用に本当に混乱しているからです。オペレーター。

4

3 に答える 3

3

|| (OR 演算子) は次のように動作します。条件 1 が true を返し、条件 2 が false を返す場合、全体的な結果は true です。

true || true = true

true || false = true

false || true = true

flase || false = false

あなたの場合:

  if (Regex.IsMatch(mtch.Value, p)  || mtch.Length < 3 )

mtch の値が RegEx と一致しているかどうか、または mtch の長さが 3 未満であるかどうかを確認してから、ループの実行を続行します。ここには 2 つの条件があります。これは、両方の条件の結果が false の場合にのみ、if ステートメントの else 部分に進みます。つまり、mtch の値が Regex p と一致せず、値の mtch の長さが 3 以上です

于 2012-05-03T11:53:13.533 に答える
1

条件付き OR 演算子 (||) は、bool オペランドの論理 OR を実行します。最初のオペランドが true と評価された場合、2 番目のオペランドは評価されません。最初のオペランドが false と評価された場合、2 番目の演算子は、OR 式全体が true と評価されるか false と評価されるかを決定します。

|| オペレーター

于 2012-05-03T11:49:02.127 に答える
0

|| 演算子は論理和を実行します。

最初に左側のオペランドを評価し、それが true の場合、式は true になります。左のオペランドが false の場合、2 番目のオペランドが評価されます。

次の例をコンソール アプリケーションとして実行すると、何が起こるかがわかります。

using System;

namespace OrOperand
{
    class Program
    {
        static void Main(string[] args)
        {
            DisplayResult(true, true);
            DisplayResult(true, false);
            DisplayResult(false, true);
            DisplayResult(false, false);
        }

        private static void DisplayResult(bool left, bool right)
        {
            _left = left;
            _right = right;

            Console.WriteLine("Running " + left + " || " + right);

            if (Left() || Right())
            {
                Console.WriteLine(_left + " || " + _right + " is true");
            }
            else
            {
                Console.WriteLine(_left + " || " + _right + " is false");
            }
        }

        static bool _left = true;
        static bool _right = false;

        static bool Left()
        {
            Console.WriteLine("Left called");
            return _left;
        }

        static bool Right()
        {
            Console.WriteLine("Right called");
            return _right;
        }

    }
}

これは出力されます:

Running True || True
Left called
True || True is true
Running True || False
Left called
True || False is true
Running False || True
Left called
Right called
False || True is true
Running False || False
Left called
Right called
False || False is false
于 2012-05-03T11:52:16.527 に答える