2012-01-24 30 views
0

我有一個字符串紅寶石:從字符串「相同的字符串的部分」獲得 - 這是

["2 192.168.1.101 10000",56 192.168.1.101 10001","3 192.168.1.101 10002","1 192.168.1.101 10003"] 

我想獲得部分或每串項目,並創建單獨的陣列 類似的陣列之間:

["2","56","3","1"] , ["192.168.1.101","192.168.1.101","192.168.1.101","192.168.1.101"] and 
["10000","10001","10002","10003"] 

我的問題是如何獲得這些字符?

對於第一個數組,那會是像從第一速度「」空的空間得到< 而對於第二個數組,它會從類似「」到「」獲得< 而對於第三個像從「」最後得到<

我希望我的問題很好理解,我收到一些回覆 謝謝你提前!

回答

3
data = ["2 192.168.1.101 10000","56 192.168.1.101 10001","3 192.168.1.101 10002","1 192.168.1.101 10003"] 
data.collect {|value| value.split(" ")}.transpose 
+1

好的答案,但也許你可以先將數組賦值給一個變量,這樣你的答案就不會滾動了? –

+0

@亞歷克斯和馬克:你說得對,對不起! – Jef

0

快速,詳細的版本:比熱夫的回答

data = ["2 192.168.1.101 10000","56 192.168.1.101 10001","3 192.168.1.101 10002","1 192.168.1.101 10003"] 
result = [[],[],[]] 
data.each do |element| 
    parts = element.split 
    result[0] << parts[0] 
    result[1] << parts[1] 
    result[2] << parts[2] 
end 

puts result.inspect 
5

一點點短:

data = ["2 192.168.1.101 10000","56 192.168.1.101 10001","3 192.168.1.101 10002","1 192.168.1.101 10003"] 
data.map(&:split).transpose 

String#split上空格分割在默認情況下,當你只需要調用一個方法對於每個陣列條目,而不是map { |x| x.do_something },則可以使用較短的map(&:do_something)

+0

我偏愛'String#split'使用空格作爲分隔符。好的!比你短的版本將是一個相當大的挑戰...... – Jef