Преобразовать строку чисел в массив чисел - PullRequest
5 голосов
/ 22 декабря 2010

В моем приложении есть текстовое поле, в которое пользователь вводит что-то вроде этого

"1,2,3,4"

, которое сохраняется в базе данных.Теперь, когда я хочу использовать внутренние числа, у меня есть две опции:

"1,2,3,4".split(',')

ИЛИ

string.scan(/\d+/) do |x|
    a << x
end

В обоих случаях я получаю массив типа

 ["1","2","3","4"] 

и затем я могу использовать числа, вызывая to_i для каждого из них.
Есть ли лучший способ сделать это, который преобразует

"1,2,3" to [1,2,3] and not ["1","2","3"]

Ответы [ 4 ]

13 голосов
/ 22 декабря 2010
str.split(",").map {|i| i.to_i}

но идея та же для вас ....

1 голос
/ 22 декабря 2010

Вы можете сделать это.

t = "1,2,3,4".split(',').collect{|n| n.to_i}
0 голосов
/ 14 августа 2017

В Ruby 1.9.3 вы можете делать следующее:

Без пробела после запятой:

"1,2,3,4".split(',')  # => ["1","2","3","4"]

С пробелом после запятой:

"1,2,3,4".split(', ')  # => ["1,2,3,4"]

Без пробела после запятой:

"1,2,3,4".split(',').map(&:to_i)  # => [1,2,3,4]

С пробелом после запятой вы получите это:

"1,2,3,4".split(', ').map(&:to_i)  # => [1]
0 голосов
/ 22 декабря 2010

Вы можете сделать это следующим способом: - "1,2,3,4" .split (/, /) * * тысяча один

Это даст вам следующий результат: -

["1", "2", "3", "4"]

Спасибо ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...