javascript - 如何用 gsub 在 Ruby 中编写替换方法?
问题描述
所以我在 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#{$1.length}>#{$2}</h#{$1.length}>" }
查看Ruby 演示
该(#+) (.*)
模式很简单:它将一个或多个哈希字符捕获到第 1 组,然后匹配一个空格,然后将行的其余部分匹配并捕获到第 2 组。
"<h#{$1.length}>#{$2}</h#{$1.length}>"
替换是允许字符串插值的双引号字符串文字。#{$1.length}>
和#{$2}
是内插的$1.length
和$2
,其中$n
指的是捕获的子串。
推荐阅读
- python - 如何删除元素“
我有一个要删除 element 的 html
<div> <div style
。我尝试了下面的代码,但无济于事for d in soup.select('div > div.style'): d.extract()
您能否详细说明
- ansible - Ansible:在嵌套字典变量中查找属性
- php - 条纹 | 发票地址未出现在发票 pdf 上
- php - Laravel 资源跳过关系
- kubernetes - k8s pod readiness probed failed: read tcp xxx -> yyy: read: connection reset by peer
- flask - SQLAlchemy & Flask-admin:无法在我的 flask-admin 视图中使用 Text primary_key 将项目添加到 SQLAchemy 数据库
- c - 如何提供 memcpy 的实现
- java - 读取普通 RSA 公钥时出错(没有 X509 证书!)
- amazon-web-services - 保留 LogGroup 并在重新部署 Lambda 时重用它
- java - 如何在jsp中动态创建Select标签?