用ruby将字符串数组转换成句子

时间:2014-06-02 19:50:26

标签: ruby arrays join methods

所以我需要将一个字符串数组转换成一个句子,大写第一个单词并在结尾添加一个句点。我到处寻找并找到了点点滴滴,但没有像我的问题那样具体。

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

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

def sentence_maker (array)

array.join(' ')

end

它会产生一个句子,但是我无法弄清楚如何使第一个单词大写,而将其他单词保持为小写并添加“。”在句末。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:5)

你可以这样做:

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

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

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

答案 1 :(得分:1)

执行此操作的简单方法是使用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更改了字符串中每个单词的第一个字母,在这种情况下我们不需要这样做。另请注意这一点修改你可能不想要的array,所以如果是这种情况,你必须以不同的方式构造代码。)

答案 2 :(得分:0)

我该怎么做:

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

相关问题