Arrays Ruby过滤器,用于在聊天室中搜索消息(用重复值填充数组)
在聊天室里,我曾经是两个生活在一起的巨魔,我无法把他们移开,我也厌倦了听他们的歌。我写了一个代码,把巨魔的信息变成青蛙的声音 像这样<代码>“你是肮脏的混蛋。猴子代码。瘸子。”=>“咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜” 为此,我使用了一些代码,并通过Arrays Ruby过滤器,用于在聊天室中搜索消息(用重复值填充数组),arrays,ruby,string,Arrays,Ruby,String,在聊天室里,我曾经是两个生活在一起的巨魔,我无法把他们移开,我也厌倦了听他们的歌。我写了一个代码,把巨魔的信息变成青蛙的声音 像这样“你是肮脏的混蛋。猴子代码。瘸子。”=>“咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜” 为此,我使用了一些代码,并通过croak以某种详细的方式x.chars.zip(%w{c r o a k}.cycle).map{x,y | y}.join来填充巨魔的单词如何更简洁地用重复值填充数组? 以下是我正在使用的代码: def troll_filter message
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"
我可能只会修改文本,而不是标点符号。此外,无需映射
-只需知道大小
:
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."
请记住,
\w
仅等于[a-zA-Z0-9.]
。如果您想捕获其他字符,您可能需要考虑使用<代码> [[:AlnUn:] ] < /COD>。这还可以捕获非ascii字符,如é
。因此,将正则表达式更改为/[:alnum:]+/
。见: