代码之家  ›  专栏  ›  技术社区  ›  Dmitry Dmitriev

Ruby过滤器,用于聊天中的巨魔消息(用重复值填充数组)

  •  4
  • Dmitry Dmitriev  · 技术社区  · 5 年前

    在我曾经是两个巨魔生活的地方聊天,我不能把他们移开,我也听腻了他们的歌。我写了一个代码把巨魔的信息变成 croack croak 蛙声。

    这样地。 "You are dirty sucks. Monkey code. Lamer." = & gt; "cro cro croak croakc croakc croak croakc"

    为此,我使用了一些代码,我用 croak 是一些冗长的方式 x.chars.zip(%w{c r o a k}.cycle).map{|x,y| y}.join . 如何用重复值更简洁的方式填充数组?

    这是一个代码,我使用:

    def troll_filter message
        message.split(" ")
        .map{ |x| 
            x.chars.zip(%w{c r o a k}.cycle).map{|x,y| y}.join 
        }.join(" ")
    end
    
    p troll_filter "sucks sucks" # "croak croak"
    
    1 回复  |  直到 5 年前
        1
  •  3
  •   Amadan    5 年前

    我也许会用 gsub 只改变文字,而不是标点符号。而且,没有必要 map -只需要知道 size :

    def troll_filter(message)
      message.gsub(/\p{Word}+/) { |x| "croak".each_char.cycle.take(x.size).join }
    end
    
    # => "cro cro croak croak. croakc croa. croak."