【问题标题】:Ruby - English sentence-like list from an array of wordsRuby - 来自单词数组的类似英语句子的列表
【发布时间】:2014-04-29 16:56:30
【问题描述】:

是否有一个 Ruby/Rails 的“魔术”助手可以从单词数组中获取,比如

["Sugar", "Water", "Lemons", "Tea"]

到一个可以放在一个句子中的字符串:

"Sugar, Water, Lemons and Tea"

我知道array.join(),但最后一个条目之前的“和”很重要。
我只是问,因为我知道 Ruby 和 Rails 有很多有用的方法潜伏在黑暗中,我想让我的代码尽可能干净

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    看起来这就是你要找的东西:)

    http://apidock.com/rails/Array/to_sentence

    to_sentence(options = {})

    “将数组转换为逗号分隔的句子,其中最后一个元素由连接词连接。”

    例子:

    ["Sugar", "Water", "Lemons", "Tea"].to_sentence # => "Sugar, Water, Lemons, and Tea"

    您还可以传递选项,例如您的最后一个单词连接器应该是什么:

    ["Sugar", "Water", "Lemons", "Tea"].to_sentence(last_word_connector: ' or ') # => "Sugar, Water, Lemons or Tea"

    编辑:

    正如 Max Williams 所指出的,默认情况下,这将在最后一个单词旁边留下一个逗号。为避免这种情况,您可以将" and " 明确声明为您的最后一个单词连接器,因为默认值似乎是", and "

    ["Sugar", "Water", "Lemons", "Tea"].to_sentence(last_word_connector: ' and ') # => "Sugar, Water, Lemons and Tea"

    【讨论】:

    • 这在“and”之前添加了一个额外的逗号,所以并不是他要求的。这是臭名昭著的“牛津逗号”,吸血鬼周末对此毫不在意。 :)
    • 明白我的意思! Ruby 只是加载了这些神秘的方法。谢谢@rorofromfrance
    • 啊,不错的编辑,不知道连接器选项。
    【解决方案2】:

    试试这个

    pry(main)> ["Sugar", "Water", "Lemons", "Tea"].to_sentence
    => "Sugar, Water, Lemons, and Tea"
    

     pry(main)> ["Sugar", "Water", "Lemons", "Tea"].to_sentence(words_connector: ', ', last_word_connector: ' and ')
      => "Sugar, Water, Lemons and Tea"
    

    【讨论】:

      【解决方案3】:

      你仍然可以使用join,只是单独做最后一个元素。

      def commas_with_and(arr)
        arr[0..-2].join(", ") << " and " << arr[-1]
      end
      
      arr = ["Sugar", "Water", "Lemons", "Tea"]
      commas_with_and(arr)
      >>  "Sugar, Water, Lemons and Tea"
      

      【讨论】:

        猜你喜欢
        • 2016-07-18
        • 2019-02-23
        • 1970-01-01
        • 1970-01-01
        • 2012-07-28
        • 1970-01-01
        • 2010-10-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多