-2

我对 C# 中的模式有这个问题。

我有这个模式:

1111100000000000000000000

它是row25 个 1 或 0 的一个。

pattern应该匹配在同一位置具有相同 1 的每个字符串,但它应该忽略string1 在pattern具有 0 的位置。唯一pattern应该检查的是 1 是否是正确的位置。

前任。

模式应匹配:

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 回答