用空格替换html标签

时间:2015-02-11 08:33:16

标签: html ruby-on-rails ruby regex

我使用方法strip_tags删除了我的字符串中的所有标记,但是在删除了一些缺少空格的文本后,特别是在1个标记结束而另一个标记开始的情况下。有没有办法在删除标签的地方插入空格?寻找前。以下

str
 => "<span>Class GOesHere</span><div>SomeExtra Tag</div>" 

helper.strip_tags(str)
 => "Class GOesHereSomeExtra Tag" 

3 个答案:

答案 0 :(得分:6)

我建议解析HTML并提取文本。 Nokogiri,一个非常着名的宝石应该可以轻松解决这个问题:

require 'nokogiri'
=> false
> str = "<span>Class GOesHere</span><div>SomeExtra Tag</div>"
=> "<span>Class GOesHere</span><div>SomeExtra Tag</div>"
> Nokogiri::HTML(str).text
=> "Class GOesHereSomeExtra Tag"

<强>更新

这将搜索html中的所有文本节点并映射文本内容。结果数组与空格分隔符连接:

> Nokogiri::HTML(str).xpath('//text()').map(&:text).join(' ')
=> "Class GOesHere SomeExtra Tag"

答案 1 :(得分:3)

尝试使用这样的正则表达式:

str.gsub!(/<.*?>/, " ")
# => " Class GOesHere  SomeExtra Tag "

答案 2 :(得分:-1)

str
 => "<span>Class GOesHere</span><div>SomeExtra Tag</div>"

您可以在标记标记之前更改字符串,例如

str.gsub!('><', '> <')

它应该产生

str
 => "<span>Class GOesHere</span> <div>SomeExtra Tag</div>"