Jak podzielić rozdzielany ciąg w Ruby i przekonwertować go na tablicę?


Odpowiedzi:


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

Lub dla liczb całkowitych:

>> "1,2,3,4".split(",").map { |s| s.to_i }
=> [1, 2, 3, 4]

Lub dla późniejszych wersji ruby ​​(> = 1.9 - jak zauważył Alex):

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

28
Pamiętaj, że jeśli używasz> = 1.9, możesz po prostu użyć „1,2,3,4” .split (','). Map (: to_i)
Alex Fort

7
Jeśli używasz aktywnego wsparcia, możesz: map (&: to_i)
jonnii

31

"1,2,3,4".split(",") jak struny

"1,2,3,4".split(",").map { |s| s.to_i } jako liczby całkowite


19

Dla String Integerbez przestrzeni jakoString

arr = "12345"

arr.split('')

output: ["1","2","3","4","5"]

Bo String Integerz przestrzenią jakString

arr = "1 2 3 4 5"

arr.split(' ')

output: ["1","2","3","4","5"]

Dla String Integerbez przestrzeni jakoInteger

arr = "12345"

arr.split('').map(&:to_i)

output: [1,2,3,4,5]

Na ciąg

arr = "abc"

arr.split('')

output: ["a","b","c"]

Objaśnienie :

  1. arr -> ciąg znaków, który zamierzasz wykonać dowolną akcję.
  2. split() -> to metoda dzieląca dane wejściowe i przechowująca je jako tablicę.
  3. ''lub ' 'lub ','-> jest wartością, którą należy usunąć z podanego ciągu.

1

najprostszym sposobem na konwersję łańcucha, który ma separator podobny do przecinka, jest użycie metody split

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

Więcej informacji na temat korzystania z metody podziału znajdziesz w ruby docs

Dzieli ciąg na podciągi na podstawie separatora, zwracając tablicę tych podciągów.

Jeśli wzorzec jest ciągiem, wówczas jego zawartość jest używana jako separator podczas dzielenia str. Jeśli wzorzec jest pojedynczą spacją, str jest dzielony na białe znaki, a wiodące białe znaki i ciągi ciągłych białych znaków są ignorowane.

Jeśli wzorzec jest Regexp, str jest dzielone tam, gdzie pasuje wzorzec. Ilekroć wzór pasuje do łańcucha o zerowej długości, str jest dzielone na poszczególne znaki. Jeśli wzorzec zawiera grupy, odpowiednie dopasowania również zostaną zwrócone w tablicy.

Jeśli wzorzec zostanie pominięty, wartość $; Jest używane. Jeśli $; ma wartość zero (co jest wartością domyślną), str jest dzielony na białe znaki, tak jakby podano ``.

Jeśli parametr limitu zostanie pominięty, końcowe pola zerowe są pomijane. Jeśli limit jest liczbą dodatnią, co najwyżej ta liczba pól zostanie zwrócona (jeśli limit wynosi 1, zwracany jest cały ciąg znaków jako jedyny wpis w tablicy). Jeśli wartość jest ujemna, nie ma ograniczenia liczby zwracanych pól, a końcowe pola zerowe nie są pomijane.


-1
"12345".each_char.map(&:to_i)

each_charrobi w zasadzie to samo co split(''): Dzieli ciąg na tablicę swoich znaków.

hmmm, właśnie zdaję sobie sprawę, że w pierwotnym pytaniu ciąg zawiera przecinki, więc moja odpowiedź nie jest zbyt pomocna ;-( ..


3
czy możesz edytować swoją odpowiedź, aby wyjaśnić, co robisz?
MZaragoza,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.