Come dividere una stringa delimitata in Ruby e convertirla in un array?


Risposte:


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

O per numeri interi:

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

O per le versioni successive di ruby ​​(> = 1.9 - come sottolineato da Alex):

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

28
Ricorda, se stai usando> = 1.9, puoi semplicemente usare "1,2,3,4" .split (','). Map (: to_i)
Alex Fort,

7
Se stai utilizzando il supporto attivo, puoi fare: map (&: to_i)
jonnii,

31

"1,2,3,4".split(",") come stringhe

"1,2,3,4".split(",").map { |s| s.to_i } come numeri interi


19

Per String Integersenza spazio comeString

arr = "12345"

arr.split('')

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

Per String Integercon lo spazio comeString

arr = "1 2 3 4 5"

arr.split(' ')

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

Per String Integersenza spazio comeInteger

arr = "12345"

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

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

Per stringa

arr = "abc"

arr.split('')

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

Spiegazione :

  1. arr -> stringa su cui eseguirai qualsiasi azione.
  2. split() -> è un metodo che divide l'input e lo memorizza come array.
  3. ''oppure ' 'oppure ','-> è un valore che è necessario rimuovere da una determinata stringa.

1

il modo più semplice per convertire una stringa che ha un delimitatore come una virgola è solo usare il metodo split

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

puoi trovare maggiori informazioni su come usare il metodo split nei documenti ruby

Divide lo str in sottostringhe in base a un delimitatore, restituendo una matrice di queste sottostringhe.

Se pattern è una stringa, il suo contenuto viene utilizzato come delimitatore quando si divide str. Se il pattern è un singolo spazio, str viene diviso nello spazio bianco, con spazi bianchi iniziali e sequenze di caratteri spazi bianchi contigui ignorati.

Se il pattern è un Regexp, str è diviso in corrispondenza del pattern. Ogni volta che il motivo corrisponde a una stringa di lunghezza zero, str viene suddiviso in singoli caratteri. Se il modello contiene gruppi, anche le rispettive corrispondenze verranno restituite nell'array.

Se il modello viene omesso, il valore di $; viene usato. Se $; è nullo (che è l'impostazione predefinita), str è diviso su spazi bianchi come se fosse specificato ''.

Se il parametro limit viene omesso, i campi null finali vengono soppressi. Se il limite è un numero positivo, verrà restituito al massimo quel numero di campi (se il limite è 1, l'intera stringa viene restituita come unica voce in un array). Se negativo, non vi è alcun limite al numero di campi restituiti e i campi null finali non vengono eliminati.


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

each_charfa praticamente lo stesso di split(''): divide una stringa in una matrice dei suoi caratteri.

hmmm, mi rendo conto ora che nella domanda originale la stringa contiene virgole, quindi la mia risposta non è davvero utile ;-( ..


3
puoi modificare la tua risposta per spiegare cosa stai facendo?
MZaragoza,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.