2010-12-22 17 views
5

W moim app, mam pole tekstowe, w którym użytkownik wprowadzi coś takiegoKonwersja ciąg liczb do tablicy liczb

"1,2,3,4" 

który dostaje przechowywane w bazie danych. Teraz, gdy chcę użyć wewnętrzne numery, mam dwie opcje:

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

LUB

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

obie strony otrzymuję tablicę jak

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

a następnie można używać liczby przez wywołanie to_i na każdym z nich.
Czy istnieje lepszy sposób w ten sposób, że przekształca

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

Odpowiedz

13
str.split(",").map {|i| i.to_i} 

ale idea jest taka sama do ciebie ....

+4

aw 1.8.7p302. 'Str.split (''), mapy (&: to_i)' –

+0

myślałem &: to_i było trochę zaniepokojone z powodu problemów z wydajnością. Nie? Dobrze, że ludzie wiedzą, że istnieje na pewno. –

+0

@Aditya: Jest * bardziej * wydajna w 1.9 i 1.8.7p302 afaik. –

-3

Można to zrobić przez następujące metody: - „1 , 2,3,4" .split (/, /)

to daje następujące wyniki: -

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

Dzięki ...

+0

Pytanie jak uzyskać '[1,2,3,4]': p –

1

Możesz to zrobić.

t = "1,2,3,4".split(',').collect{|n| n.to_i} 
0

W Ruby 1.9.3 można wykonać następujące czynności:

Brak miejsca po przecinku:

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

Z miejsca po przecinku:

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

nr spacja po przecinku:

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

z miejsca po przecinku, masz zamiar dostać to:

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