代码之家  ›  专栏  ›  技术社区  ›  tybro0103

在Ruby字符串中查找和替换变量

  •  1
  • tybro0103  · 技术社区  · 14 年前

    “Lorem ipsum de color[post]57[/post]

    我想找到所有出现的[post]*[/post]并用数字表示的文章标题替换它。我最终会得到这样的结果:

    “Lorem ipsum de color愤怒的乌龟坐下” 阿梅特模糊拉比特剥离器。”

    我想需要一个正则表达式。。。寻找正则表达式是什么以及如何使用。

    2 回复  |  直到 14 年前
        1
  •  7
  •   jwarchol    14 年前

    String上的gsub方法有一个方便的块变体,在这里工作得很好:

    >> s = "Lorem ipsum de color [post]57[/post] sit amet [post]103[/post] desectator."
    => "Lorem ipsum de color [post]57[/post] sit amet [post]103[/post] desectator."
    
    >> posts = {"57" => "Angry Turtle", "103" => "Fuzzy Rabit"}
    => {"57"=>"Angry Turtle", "103"=>"Fuzzy Rabit"}
    
    >> s.gsub(/\[post\](\d+)\[\/post\]/) {|m| posts[$1] }
    => "Lorem ipsum de color Angry Turtle sit amet Fuzzy Rabit desectator."
    

    不过,您的语法对regex的友好程度不会低很多。尽量不要使用括号和斜线。

        2
  •  2
  •   steenslag    14 年前

    (在阅读了更简单的语法注释之后) 如果你有一个像

    posts = {57 => "Angry Turtle", 103 => "Fuzzy Rabit"}
    

    或者像,嗯,

    posts = []
    posts[57] = "Angry Turtle"
    posts[103] = "Fuzzy Rabbit"
    

    那为什么不选择字符串插值呢?

    "Lorem ipsum de color #{posts[57]} sit amet #{posts[103]} desectator."
    

    你已经准备好出发了。