如何用 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
指的是捕获的子串。
所以我在 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
指的是捕获的子串。