помещаем переменную чисел, которые являются строками, в массив

#ruby #arrays #variables

#ruby #массивы #переменные

Вопрос:

У меня есть переменная, которая выглядит следующим образом:

 my_var = "123, 222, 333, 444, 555, 1024, 44444"
  

С трудом придумываю, как поместить каждое из этих значений в массив.

 my_array = []
my_array.push(my_var)
=> ["123, 222, 333, 444, 555, 1024, 44444"]
puts my_array[0]
=> 1
  

Я пытаюсь получить:

 puts my_array[0]
=> 123
  

Комментарии:

1. Откуда берется эта строка?

Ответ №1:

Используйте String#split метод, чтобы сначала получить массив строк, затем преобразовать их в целое число с помощью String#to_i :

 ary = my_var.split(",").map(amp;:to_i)
# => [123, 222, 333, 444, 555, 1024, 44444]
p ary[0]
# => 123
  

Или используйте String#scan метод

 ary = my_var.scan(/d /).map(amp;:to_i)
# => [123, 222, 333, 444, 555, 1024, 44444]
p ary[0]
# => 123
  

Ответ №2:

Другой подход заключается в использовании CSV класса Ruby:

 require "csv"

my_var = "123, 222, 333, 444, 555, 1024, 44444"

CSV.parse_line(my_var, converters: :numeric)
#=> [123, 222, 333, 444, 555, 1024, 44444]