0

我有一个字符串:

str = "abc xyz<img src="abc"/> 123 <img src="abc"/><img src="xyz"/>"

我想<br/>在字符串末尾的连续图像标签之前放置一个,因此生成的字符串将是:

str = "abc xyz<img src="abc"/> 123 <br/><img src="abc"/><img src="xyz"/>"

只有字符串末尾的连续图像标签才会以 br 开头。我将如何使用正则表达式和gsub方法来做到这一点?

4

2 回答 2

1

你可以做类似的事情

1.9.3p194 :001 > str = "abc xyz 123 <img src='smiley.gif' height='42' width='42'>"
 => "abc xyz 123 <img src='smiley.gif' height='42' width='42'>" 
1.9.3p194 :002 > str.gsub(/<img/, "<br/><img")
 => "abc xyz 123 <br/><img src='smiley.gif' height='42' width='42'>" 

尽管更好的解决方案可能是向使用 CSS 将其推送到下一行的图像标签添加一个类。可能你只需要一个“显示:块”样式

于 2013-05-28T18:43:25.797 回答
0
require 'nokogiri'
require 'pp'

doc = Nokogiri::HTML::Document.parse(<<-eohtml)
"abc xyz<img src="abc"/> 123 <img src="abc"/><img src="xyz"/>"
eohtml

doc.css("img").each{|i| i.previous = '<br/>'}
puts doc.to_html

输出:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>"abc xyz<br><img src="abc"> 123 <br><img src="abc"><br><img src="xyz">"
</p></body></html>

根据OP的最新编辑:

require 'nokogiri'
require 'pp'

doc = Nokogiri::HTML::Document.parse(<<-eohtml)
"abc xyz<img src="abc"/> 123 <img src="abc"/><img src="xyz"/>"
eohtml
doc.css("img[src = abc]")[1].previous = "<br/>"
puts doc.to_html

输出:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>"abc xyz<img src="abc"> 123 <br><img src="abc"><img src="xyz">"
</p></body></html>
于 2013-05-28T19:18:17.527 回答