【问题标题】:turn array of strings into a sentence with ruby用 ruby​​ 将字符串数组变成一个句子
【发布时间】:2014-07-23 00:29:23
【问题描述】:

所以我需要将一个字符串数组变成一个句子,将第一个单词大写并在末尾添加一个句点。我到处找了找零零碎碎的东西,但没有什么比我的问题更具体。

到目前为止我尝试了什么:

array1 = ["this", "is", "my", "first", "post"] 

def sentence_maker (array)

array.join(' ')

end

它是一个句子,但我不知道如何使第一个单词大写,而其他单词保持小写并添加一个“。”在句末。任何帮助将不胜感激。

【问题讨论】:

  • 太棒了!感谢大家的参与。我是 ruby​​ 的新手,这些答案都很有帮助。非常感谢。

标签: ruby arrays join methods


【解决方案1】:

你可以这样做:

array1 = ["this", "is", "my", "first", "post"] 

def sentence_maker (array)
  array.join(' ').capitalize << "."
end

sentence_maker(array1)
# => "This is my first post."

【讨论】:

    【解决方案2】:

    我会怎么做:

    array1 = ["this", "is", "my", "first", "post"]
    
    def sentence_maker(array)
       string = array.join(' ')
       string.capitalize!
       string << '.'
    end
    
    puts sentence_maker(array1)
    #=> "This is my first post."
    

    见:http://www.ruby-doc.org/core-1.9.3/String.html

    【讨论】:

      【解决方案3】:

      执行此操作的简单方法是使用capitalize method,但请注意“大小写转换仅在 ASCII 区域有效”:

      "école".capitalize
       # => "école" 
      

      如果这可能是一个问题,您应该考虑使用类似 Unicode Utils gem:

      require 'unicode_utils'
      UnicodeUtils.titlecase("école")
      # => "École"
      

      所以你的完整方法可能看起来像:

      def sentence_maker (array)
      
        array[0] = UnicodeUtils.titlecase(array[0])
        array.join(' ') << '.'
      
      end
      

      (这与其他答案有点不同,因为titlecase 更改了字符串中 每个 单词的第一个字母,在这种情况下我们不希望这样做。还要注意这会修改 @ 987654328@ 你可能不想要,所以如果是这种情况,你必须以不同的方式构造代码。)

      【讨论】:

        猜你喜欢
        • 2011-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-01
        • 2014-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多