假设我有一个像这样的字符串:
“Lorem ipsum de color [post] 57 [/ post] 坐在[post] 103 [/ post] desectator。“
我想查找[post] * [/ post]的所有匹配项,并将其替换为数字所代表的帖子的标题。我最终得到了类似的东西:
“Lorem ipsum de color愤怒的龟坐 amet模糊Rabit desectator。“
我猜测需要正则表达式...寻找正则表达式以及如何使用。
答案 0 :(得分:7)
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."
然而,你的语法对正则表达式的友好程度要低得多。尽量不要使用括号和斜杠。
答案 1 :(得分:2)
(阅读更简单的语法评论后) 如果您有像
这样的哈希值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."
你准备好了。