2017-03-02 79 views
-2

我有一個數組紅寶石GSUB通過陣列

arr = ['10kg','5kg','7','15kg','25'] 

所以我要刪除所有kg如果存在的話,返回的字符串

"'10kg','5kg','7kg','15kg','25kg'" 

我已經試過

kgs = arr.split(',').gsub('kg','')+'kg' 

但是不好的解決辦法

+2

刪除'kg'仍然在返回... –

+0

_「刪除所有千克如果存在」 _ - 好像你要_add_'kg'如果它缺少。你能澄清一下嗎? – Stefan

+0

@Stefan我想刪除,如果存在,並添加如果缺席:) – user2322409

回答

4
['10kg','5kg','7','15kg','25'].map(&:to_i).map { |e| "#{e}kg" } 
#⇒ [ 
# [0] "10kg", 
# [1] "5kg", 
# [2] "7kg", 
# [3] "15kg", 
# [4] "25kg" 
# ] 

['10kg','5kg','7','15kg','25'].map(&:to_i) 
           .map { |e| "'#{e}kg'" } 
           .join(',') 
#⇒ "'10kg','5kg','7kg','15kg','25kg'" 
+0

如果您使用'.to_i'來剔除'kg'部分,這不是一個可怕的想法,爲什麼不僅僅是'''#{e.to_i} kg'「'? – tadman

+0

@tadman我試圖回答這兩個問題「我想刪除所有公斤,如果它存在」和「返回字符串」在一個:) – mudasobwa

+0

原來的問題提出了更多的問題比它應該,但我喜歡你的方法來解決它。 – tadman

6
a.map { |str| "'#{str.to_i}kg'" }.join(',') 
#=> "'10kg','5kg','7kg','15kg','25kg'" 
+0

我在想同樣的事情,但在現實生活中,我想我會用'''#{str [/ \ d + /]} kg'「'。 –

+0

@CarySwoveland是的,這看起來更加真實生動。請隨時使用此選項編輯答案,因爲此刻我正在關閉筆記本電腦 –

+0

最好按照原樣離開。讀者吃了聰明的答案。 –

0

如果你想添加kg串入的所有元素祚可以只使用這個

arr.map{|s| s[/kg$/] ? s : s + 'kg'}.join(', ') 
# => "10kg, 5kg, 7kg, 15kg, 25kg" 

或者,如果你想爲「刪除是否存在,並添加如果不存在」。

arr.map{|s| s[/kg$/] ? s.gsub('kg', '') : s + 'kg'}.join(', ') 
# => "10, 5, 7kg, 15, 25kg"