我使用方法strip_tags
删除了我的字符串中的所有标记,但是在删除了一些缺少空格的文本后,特别是在1个标记结束而另一个标记开始的情况下。有没有办法在删除标签的地方插入空格?寻找前。以下
str
=> "<span>Class GOesHere</span><div>SomeExtra Tag</div>"
helper.strip_tags(str)
=> "Class GOesHereSomeExtra Tag"
答案 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>"