Найти и заменить переменную в строке Ruby - PullRequest
1 голос
/ 30 октября 2010

Допустим, у меня есть такая строка:

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

Я хочу найти все вхождения [post] * [/ post] и заменить его заголовком сообщения, представленным номером.Я бы в итоге получил что-то вроде этого:

"Lorem ipsum de color Angry Turtle sit amet Fuzzy Rabit desectator."нужно ... искать, каким будет регулярное выражение и как его использовать.

Ответы [ 2 ]

7 голосов
/ 30 октября 2010

Метод gsub в String имеет удобную вариацию блоков, которая хорошо работает здесь:

>> 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."

Ваш синтаксис не может быть намного менее дружественным к регулярным выражениям.Старайтесь не использовать скобки и косые черты.

2 голосов
/ 30 октября 2010

(после прочтения вашего более простого синтаксического комментария) Если у вас есть хэш типа

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."

И ты готов к работе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...