如何用 gsub 在 Ruby 中编写替换方法?

How to write replace method in Ruby with gsub?

所以我在 JS 中有这个函数,我想在 Ruby 中编写它,伙计们有什么想法吗?

arr = "### ### Lorem.  "
arr.replace(/(#+) (.*)/g, (_, h, t) => `<h${h.length}>${t}</h${h.length}>`)

我正在尝试

arr.gsub( /(?<lvl>\#{1,6})(?<text>.*)/){ |m| "#{m[:lvl]} #{m[:text]}"} 

错误:

Traceback (most recent call last):
     8: from /Users/mereynurlan/.rvm/rubies/ruby-2.6.3/bin/irb:23:in `<main>'         
     7: from /Users/mereynurlan/.rvm/rubies/ruby-2.6.3/bin/irb:23:in `load'         
     6: from /Users/mereynurlan/.rvm/rubies/ruby-2.6.3/lib/ruby/gems/2.6.0/gems/irb- 

您可以使用

arr = arr.gsub(/(#+) (.*)/) { "<h#{.length}>#{}</h#{.length}>" } 

看到一个Ruby demo

(#+) (.*) 模式很简单:它将一个或多个散列字符捕获到第 1 组,然后匹配 space 并将行的其余部分匹配并捕获到第 2 组。

"<h#{.length}>#{}</h#{.length}>" 替换是一个双引号字符串文字,允许字符串插值。 #{.length}>#{}被内插.length</code>,其中<code>$n指的是捕获的子串。