Gsub 就地不工作

Gsub in-place not working

我有这个代码:

Firm.all.each do |firm|
    url = firm.site
    doc = Nokogiri::HTML(open(url))
    data = doc.css("##{firm.menu_id} a")
    data.each do |e|
      e.text.strip!
      e.text.gsub!(/[\n\t]*/,'')
      puts e.text
    end
end

字符串以与输入相同的格式显示(这意味着 gsub! 方法不影响字符串)。我认为 e.text 可以是不可变的,但我想确保这一点。

text方法returns每次一个新的String,使用object_id可以看到:

e = Nokogiri::XML('<a>text</a>')

e.text.object_id == e.text.object_id # => false

如果要修改节点的文本,设置内容:

e.at_css('a').content = "foo"
e.text # => "foo"