测试字符串中的所有可能性

KPS*_*KPS 3 c# linq string c#-4.0

我试图测试(比较内存中的另一个值)字符串中所有可能的组合,但想知道最好的方法是做什么.

我的输入字符串是0246,诀窍是每个数字可以是2个选项之一,例如:

[0,1][2,3][4,5][6,7]
Run Code Online (Sandbox Code Playgroud)

我希望能够翻转所有可能的组合,这有点像破解保险箱,但这不是我的目的,我保证!

我正在考虑做一个foreach循环切换每个选项,但我的循环将嵌套,我知道性能将受到打击,因为Linq就像新的黑色,这可以用它完成吗?

UPDATE*

我希望结果按从低到高的顺序返回,因为我所比较的原始字符串可能是0001,但随机跳转是没有意义的.

我还想跟踪我有多少次生成不同的变化,并注意到它将在以后使用.

Jep*_*sen 7

你的意思是这样的:

var allCombinations = from a in new[] { "0", "1", }
                      from b in new[] { "2", "3", }
                      from c in new[] { "4", "5", }
                      from d in new[] { "6", "7", }
                      select a + b + c + d;
Run Code Online (Sandbox Code Playgroud)

或者更好的:

var allCombinations = from a in "01"
                      from b in "23"
                      from c in "45"
                      from d in "67"
                      select string.Concat(a, b, c, d);
Run Code Online (Sandbox Code Playgroud)

在后者(花哨)版本ab,cdchar变量,string.Concat(a, b, c, d)也可以编写a.ToString() + b + c + d.