用空格替换html标签

Avd*_*ept 2 html ruby regex ruby-on-rails

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

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

helper.strip_tags(str)
 => "Class GOesHereSomeExtra Tag" 
Run Code Online (Sandbox Code Playgroud)

vee*_*vee 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"
Run Code Online (Sandbox Code Playgroud)

更新:

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

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

  • 添加了解决方案。感谢@HamZa 指出这一点。我读错了最后一部分。 (3认同)