我有一个字符串:
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
方法?
答案 0 :(得分: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将其推送到下一行的图像标记。可能你只需要一个“display:block”风格
答案 1 :(得分: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>