[英]Array of Strings to Convert to Mixed Array
我試圖將由Ruby字符串組成的數組數組轉換為由字符串和浮點數組成的數組數組。
這是我的嘗試:
array = [["My", "2"], ["Cute"], ["Dog", "4"]]
array.collect! do |x|
x.each do |y|
if y.gsub!(/\d+/){|s|s.to_f}
end
end
end
=> [["My", "2.0"], ["Cute"], ["Dog", "4.0"]]
我正在尋找它來返回[["My", 2.0], ["Cute"], ["Dog", 4.0]]
我做錯了什么?
您做錯的是您使用了gsub!
。 這需要一個字符串並更改該字符串。 無論您做什么,它都不會將其轉換為其他任何東西(即使您將其轉換為中間的浮點數)也是如此。
一種實現所需目標的簡單方法是:
[["My", "2"], ["Cute"], ["Dog", "4"]].map{|s1, s2| [s1, *(s2.to_f if s2)]}
如果您不想創建元素數組,而是替換其內容,則:
[["My", "2"], ["Cute"], ["Dog", "4"]].each{|a| a[1] = a[1].to_f if a[1]}
如果數字字符串出現在隨機位置,則:
[["My", "2"], ["Cute"], ["Dog", "4"]]
.each{|a| a.each.with_index{|e, i| a[i] = a[i].to_f if a[i] and a[i] =~ /\d+/}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.