2017-03-02 70 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"