【问题标题】:How do I substitute characters around a string in Ruby?如何在 Ruby 中替换字符串周围的字符?
【发布时间】:2012-05-29 20:11:52
【问题描述】:

我正在尝试编写一个 ruby​​ 脚本来将我编写的一种小型标记语言转换为 HTML,但我不知道如何解析链接。它基本上是 BBCode 的精简版,例如,如果有人输入[i]{text}[/i],我使用[i]{text}[/i].gsub('[i]','<i>').gsub('[/i]','</i>'。不过,我不知道如何解析链接。我如何将[url=website.com]site[/url] 变成<a href="website.com">site</a>?我没有使用预制的 BBCode 解析器,因为有一些不同的标签,我不希望人们使用一些标签,例如 [img][/img]

【问题讨论】:

  • bb-ruby 似乎只允许您指定要使用的某些标签,为什么不使用呢?
  • @AndrewMarshall 我不知道。我会用它来代替。

标签: ruby parsing replace bbcode substitution


【解决方案1】:

非常天真:

s.gsub(/\[url=(.*?)\](.*?)\[\/url\]/) { "<a href='#{$1}'>#{$2}</a>" }

HTML 注入会很容易。 here(写一个合适的解析器)这一点仍然适用于你正在做的事情。

【讨论】:

    【解决方案2】:

    我同意 kch 使用正则表达式,但如果你想像你一直在做的那样使用 gsub() 来环绕它......

    s = "[url=website.com]site[/url]"
    s2 = s.gsub('[url=','<a href="').gsub('[/url]','</a>').gsub(']','">')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      相关资源
      最近更新 更多