-2

C# のパターンにこの問題があります。

私はこのパターンを持っています:

1111100000000000000000000

row25 個の 1 または 0 です。

これpatternは、同じ場所に同じ 1 があるすべての文字列に一致する必要がありますが、に 0 がstringある場所に 1 がある場合は無視する必要があります。チェックする必要があるのは、1 が正しい場所にあるかどうかだけです。patternpattern

元。

パターンは次のように一致する必要があります。

1111100000000000000000000

1111100000001000100010001

1111111110000111100111100

だがしかし:

0111110000101110001011000

1011111010101010101000000

正規表現でこれを試しました:

       var orginal_pattern = "1111100000000000000000000";
       var match_pattern =   "1111100000000000010000000";

       var pattern = orginal_pattern.Replace("0", "[?]");
       Debug.WriteLine(pattern);

       var RegMatch = Regex.Match(match_pattern, pattern);

       Debug.WriteLine(RegMatch.Success);

誰かが私にアイデアをくれることを願っています。

ありがとうございました!

4

1 に答える 1

2

文字列をintに変換してAND演算子を使用するだけです

int pattern = Convert.ToInt32("1111100000000000000000000", 2);
int[] nums = new int[]{
    Convert.ToInt32("1111100000000000000000000", 2),
    Convert.ToInt32("1111100000001000100010001", 2),
    Convert.ToInt32("1111111110000111100111100", 2),
    Convert.ToInt32("0111110000101110001011000", 2),
    Convert.ToInt32("1011111010101010101000000", 2),
};

foreach (var num in nums)
{
    bool b = (pattern & num)==pattern;
    Console.WriteLine(b);
}

出力:

True
True
True
False
False
于 2012-08-21T18:36:41.917 に答える