2015-02-06 38 views
4

我有一個數組,在這一點上是["firstname1 ", "lastname1", "firstname2 ", "lastname2", etc],我試圖想出一種方法來組合字符串,這樣我會有一個["firstname1 lastname1", "firstname2 lastname2", etc]的數組。結合Ruby中的數組的字符串元素

回答

11

使用Enumerable#each_slice,您可以迭代切片n元素(在您的案例中爲2)。

通過加入這兩個元素,你會得到你想要的。

a = ["firstname1 ", "lastname1", "firstname2 ", "lastname2"] 
a.each_slice(2).map(&:join) 
# => ["firstname1 lastname1", "firstname2 lastname2"] 
+0

感謝您的快速回復! – 2015-02-06 20:25:22

1

一些其他的方法:

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"]