你如何获取一个列表并将其变成逗号分隔的字符串,在数组的最后一个元素之前加上"和"?
采取类似的方式:
list1 = ['a','b','c']
Run Code Online (Sandbox Code Playgroud)
把它变成这个:
=> "a, b, and c"
Run Code Online (Sandbox Code Playgroud)
我记得ruby有一个方法.然而,我搜索过,找不到它.谢谢您的帮助.
Sor*_*row 17
试试:[list[0...-1].join(", "), list.last].join(", and ")
.
编辑:Rails有你可能正在寻找的方法,叫做to_sentence
.
如果您没有Rails或不希望依赖Rails,请打开Array
类并包含上述方法,如:
class Array
def join_all(join_with = ", ", connector = "and", last_comma = false)
return self.to_s if self.empty? || self.size==1
connector = join_with+connector if last_comma
[list[0...-1].join(join_with), list.last].join(connector)
end
end
Run Code Online (Sandbox Code Playgroud)
class Array
def to_sentence
sentence = self[0..-2].join(", ") + ", and " + self[-1].to_s if self.size > 1
sentence ||= self.to_s
end
end
Run Code Online (Sandbox Code Playgroud)
所以
[1].to_sentence
#=> "1"
[1,2,3].to_sentence
#=> "1, 2, and 3"
[].to_sentence
#=> ""
Run Code Online (Sandbox Code Playgroud)
在Rails中,这里是使用I18n语言环境的to_sentence方法