如何将这段代码减少到一行?

How to reduce this code down to one line?

我正在使用 Nokogiri。

我有以下代码用标准的撇号替换撇号。

def replace_apostrophe(nokogiri_xml_doc)
  nokogiri_xml_doc.xpath('//text()').each {|node| node.content = node.content.gsub(/\b'|’|‛|⸂|⸄|⸌|⸜\b/, "'")}
  nokogiri_xml_doc 
end

我想将方法​​减少到一行,但我不知道如何实现。

有什么想法吗?

老实说,我宁愿将它保留为两行;将它压缩成一行可能是 "clever",但它会使代码更难阅读。

不过,如果你真的想把它变成单行,你可以使用 Object#tap:

def replace_apostrophe(nokogiri_xml_doc)
  nokogiri_xml_doc.tap { |doc| doc.xpath('//text()').each { |node| node.content = node.content.gsub(/\b'|’|‛|⸂|⸄|⸌|⸜\b/, "'") } }
end

查看评论以获取有用信息。

I would like to reduce the method down to one line but I can't figure out how to make that happen.

您始终可以用分号或关键字替换换行符并编写任何代码,无论一行多么复杂:

def replace_apostrophe(nokogiri_xml_doc) nokogiri_xml_doc.xpath('//text()').each {|node| node.content = node.content.gsub(/\b'|’|‛|⸂|⸄|⸌|⸜\b/, "'")}; nokogiri_xml_doc end

但是,真的更好吗?