【发布时间】:2015-02-06 17:13:01
【问题描述】:
我有一个数组,此时为["firstname1 ", "lastname1", "firstname2 ", "lastname2", etc],我正在尝试想出一种方法来组合字符串,这样我将拥有一个["firstname1 lastname1", "firstname2 lastname2", etc] 的数组。
【问题讨论】:
我有一个数组,此时为["firstname1 ", "lastname1", "firstname2 ", "lastname2", etc],我正在尝试想出一种方法来组合字符串,这样我将拥有一个["firstname1 lastname1", "firstname2 lastname2", etc] 的数组。
【问题讨论】:
使用Enumerable#each_slice,您可以迭代n 元素的切片(在您的情况下为2)。
通过加入这两个元素,你会得到你想要的。
a = ["firstname1 ", "lastname1", "firstname2 ", "lastname2"]
a.each_slice(2).map(&:join)
# => ["firstname1 lastname1", "firstname2 lastname2"]
【讨论】:
其他一些方法:
a = ["Shirley ", "Temple", "Oliver ", "Hardy", "John ", "Wayne"]
#1
(0...a.size).step(2).map { |i| a[i]+a[i+1] }
#=> ["Shirley Temple", "Oliver Hardy", "John Wayne"]
#2
enum = a.to_enum
(a.size/2).times.map { enum.next + enum.next }
#=> ["Shirley Temple", "Oliver Hardy", "John Wayne"]
#2a
enum = a.to_enum
names = []
loop { names << enum.next + enum.next }
names
#=> ["Shirley Temple", "Oliver Hardy", "John Wayne"]
#3
fname = nil
a.each_with_object([]) { |s,a| (s[-1]==' ') ? fname=s : a << fname+s }
#=> ["Shirley Temple", "Stan Laurel", "John Wayne"]
【讨论】: