如何将此代码减少到一行?

时间:2017-05-22 08:16:43

标签: ruby nokogiri

我正在使用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

我想将方法​​缩减到一行,但我无法弄清楚如何实现这一目标。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

  

我想将方法​​缩减到一行,但我无法弄清楚如何实现这一目标。

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

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

但是,这真的更好吗?

答案 1 :(得分:1)

说实话,我宁愿把它留作两条线;将它压缩成一行可能是"聪明",但它使代码更难阅读。

但是,如果你真的想让它成为单行,你可以使用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

请参阅评论以获取有用信息。