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

tyb*_*103 1 ruby regex string replace ruby-on-rails

假设我有一个像这样的字符串:

"Lorem ipsum de color [post] 57 [/ post] sit amet [post] 103 [/ post] desectator."

我想找到所有[post]*[/ post]的出现次数,并将其替换为数字所代表的帖子的标题.我最终会得到这样的结论:

"Lorem ipsum de color愤怒的乌龟坐在模糊的Rabit desectator."

我猜测需要正则表达式...寻找正则表达式以及如何使用.

jwa*_*hol 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."
Run Code Online (Sandbox Code Playgroud)

你的语法不能比正则表达式更友好.尽量不要使用括号和斜杠.