使用gsub(),如何在替换字符串中引用替换后的字符串?

时间:2013-08-15 04:35:01

标签: ruby-on-rails ruby gsub

例如,我有一个文本块,其中包含字符串“{image = filename.jpg}”的几个实例,其中filename.jpg可以是任何文件名,我想用{}替换所有内容通过使用文件名找到图像的图像标签,例如Model.find_by_attachment_file_name( “filename.jpg”)。

是否可以这样做?

编辑:

示例输入:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 

{image=some_file.png}

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

期望的输出:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 

<img src="/system/attachments/model/some_file.png">

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

使用Model.find_by_model_attachment_file_name("some_file.png").model_attachment.url

可以找到所需输出的图像标记的src属性

就是这样:

string.gsub(/{image=.*}/, "<image src=#{ContentAttachment.find_by_content_image_file_name([???]).content_image.url(:main)}")

其中[???]被替换为用gsub替换的内容。

或者,如何在gsub的第二个参数中引用第一个参数?

1 个答案:

答案 0 :(得分:4)

不是将第二个参数设置为gsub,而是将一个块附加到gsub上。

string.gsub(/\{image=(.*)\}/){
  # $1 will be "some_file.png"
  "<image src=#{ContentAttachment.find_by_content_image_file_name([$1]).content_image.url(:main)}"
}