如何在没有属性和标签名的情况下在HTML文档中包装单词

| 我有一个长词的HTML文档:
<div>this is a veeeeeeeeeeeerryyyyyyyyloooongwoooord<img src=\"/fooooooooobaaar.jof\" ></div>
我想自动换行而不切掉标签或其属性:
<div>this is a veeeeeeeeeeeerryyyyy yyyloooongwoooord<img src=\"/fooooooooobaaar.jof\" ></div>
另外,我可能根本没有任何HTML标记。 我尝试了Nokogiri,但它在无标签输入中插入了一个段落,并用HTML文档包装了整个响应,这不是我的意图。 做到这一点的最佳方法是什么?
require \"Nokogiri\"
class String
  def wrap()
    doc = Nokogiri::HTML(self)
    doc.at(\"body\").traverse do |p|
      if p.is_a?(Nokogiri::XML::Text)
        input = p.content
        p.content = input.scan(/.{1,25}/).join(\" \")
      end
    end
    doc.to_s # I want only the wrapped string, without the head/body stuff
  end
end
    
已邀请:
        我认为使用Nokogiri :: XML(self)代替Nokogiri :: HTML(self)将为您提供帮助。     
        这看起来像是您的起点:
require \'nokogiri\'

max_word_length = 30
html = \'<div>this is a veeeeeeeeeeeerryyyyyyyyloooongwoooord<img src=\"/fooooooooobaaar.jof\" ></div>\'

doc = Nokogiri::HTML.fragment(html)

doc.search(\'text()\').each do |n|
  n.content = n.content.split(\' \').map { |l|
    if (l.size > max_word_length)
      l = l.scan(/.{1,#{ max_word_length }}/).join(\"\\n\")
    end
    l
  }.join(\' \')
end

puts doc.to_html
# >> <div>this is a veeeeeeeeeeeerryyyyyyyyloooong
# >> woooord<img src=\"/fooooooooobaaar.jof\">
# >> </div>
    

要回复问题请先登录注册