我将通过实例和期望的结果来解释。
说我有以下字符串作为基础:abcdwx
我希望在包含这些变体时生成所有可能的组合:“a” - > “1,$,A,@”,“b” - > “B”,c - > “#,0,07,cd,CD,Cd,cD,dd,DD”,“w” - > “n,NN,l,L,!,1,),(,0,#,&,%,$,^,##,^^”
因此,例如,可能的组合包括1bcd ## x abDDd!x和aBcDdNNx
谷歌搜索引导我(不是我想要的)Ruby代码
string = "abcdwx"
p = ?a, ?b, ?c, ?d, ?w, ?x
q = [ ?1, ?$, ?A, ?@ ], [ ?B ], [ ?#, ?0 ], [ ?d ], [ ?l ], [ ?n, ?N ]
replacements = Hash.new { |h, e| Array e }.tap do |h|
p.zip( q ).each { |p, q| h[p] = p, *Array( q ) }
end
#=> {"a"=>["1", "$", "A", "@"], "b"=>["B"], "c"=>["#", "0"], "d"=>["d"], "w"=>["l"], "x"=>["n", "N"]}
puts string.split( '' ).map( &replacements.method( :[] ) ).reduce( &:product ).map { |e|
e.flatten.join
}
我可以用于单字符替换,但它给了我
warning: '?' just followed by NN is interpreted as a conditional operator, put a space after '?'
和
syntax error, unexpected '?', expecting ']'
当我尝试做的时候,说“a” - > “##”或“a” - > “A0”
我做的事情的方法不需要是Ruby(甚至是脚本),我只是觉得这个语法错误问题可能有一个简单的解决方案,我不明白因为我不喜欢不知道编码。
答案 0 :(得分:0)
我需要做的就是改变?##到##',?NN到'?NN'等等。