ruby中字符串中所选字符替换的所有可能组合

前端之家收集整理的这篇文章主要介绍了ruby中字符串中所选字符替换的所有可能组合前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道是否有一种简单的方法可以用简单的方式在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

猜你在找的Ruby相关文章