我想知道是否有一种简单的方法可以用简单的方式在ruby中完成所选字符替换的每个组合.
一个例子:
string = "this is a test" subs = ['a'=>'@','i'=>'!','s'=>'$'] subs.combination.each { |c| string.gsub c }
会屈服
"this is @ test" "th!s !s a test" "thi$i$a te$t" "th!s !s @ test" "thi$i$@ te$t" "th!$!$a te$t" "th!$!$@ te$t"
谢谢您的帮助!
解决方法
string = "this is a test" subs = ['a'=>'@','s'=>'$'] subs = subs.first.map(&:to_a) 1.upto(subs.length).each do |n| subs.combination(n).each do |a| p a.each_with_object(string.dup){|pair,s| s.gsub!(*pair)} end end