簡體   English   中英

字符串數組轉換為混合數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM