提问人:JordanS 提问时间:4/15/2018 更新时间:4/15/2018 访问量:46
将字符串中的字符替换为多个字符,所有可能的组合
Replace character in a string with multiple characters, all possible combinations
问:
我将通过示例和期望的结果进行解释。
假设我有以下字符串作为基础: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赞
JordanS
4/15/2018
#1
我需要做的就是将 ?## 更改为 '?##',将 ?NN 更改为 '?NN'等
评论