簡體   English   中英

如何在Ruby中將字符串轉換為數組

[英]How to convert an String into Array in Ruby

在ruby中,我有一個帶有字符串值的數組:

my_array=["210,207,203,199,169,165,159,152,148,144,140,137"]

我如何將其轉換為如下所示的普通數組:

my_array=[210,207,203,199,169,165,159,152,148,144,140,137]

注意:所有元素均為非負值。
我知道我可以通過手動修剪雙引號來做到這一點,但我想知道是否有更優雅的方法來實現這一點?

我認為這應該工作:

my_array = my_array[0].split(',').map(&:to_i)

擴展davidrac的答案,您還可以使用String#scan代替String#split

my_array = my_array[0].scan(/\d+/).map(&:to_i)

編輯

這個清晰的基准表明String#scan速度較慢:

require 'benchmark'
string = "210,207,203,199,169,165,159,152,148,144,140,137"
Benchmark.bm do |x|
  x.report('split') { 1_000_000.times { string.split(',').map(&:to_i) } }
  x.report('scan') { 1_000_000.times { string.scan(/\d+/).map(&:to_i) } }
end

產量:

           user     system      total        real
split  3.550000   0.010000   3.560000 (  3.580334)
scan   7.350000   0.020000   7.370000 (  7.402508)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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