Comment diviser une chaîne en Ruby et obtenir tous les éléments sauf le premier?

La chaîne est ex="test1, test2, test3, test4, test5"

quand j’utilise

 ex.split(",").first 

il retourne

 "test1" 

Maintenant, je veux obtenir les éléments restants, à savoir “test2, test3, test4, test5”. Si j’utilise

 ex.split(",").last 

il ne retourne que

 "test5" 

Comment faire pour que tous les éléments restants sautent le premier?

Essaye ça:

 first, *rest = ex.split(/, /) 

Maintenant, la première valeur sera la première, le rest sera le rest du tableau.

 ex.split(',', 2).last 

Le 2 à la fin dit: divisé en 2 morceaux, pas plus.

Normalement, le partage divisera la valeur en autant de pièces que possible, en utilisant une seconde valeur, vous pourrez limiter le nombre de pièces que vous obtiendrez. Utiliser ex.split(',', 2) vous donnera:

 ["test1", "test2, test3, test4, test5"] 

sous forme de tableau, au lieu de:

 ["test1", "test2", "test3", "test4", "test5"] 

Comme vous avez un tableau, ce que vous voulez vraiment, c’est Array#slice , pas split .

 rest = ex.slice(1 .. -1) # or rest = ex[1 .. -1] 

Vous avez probablement mal écrit quelques choses. De ce que je comprends, vous commencez avec une chaîne telle que:

 ssortingng = "test1, test2, test3, test4, test5" 

Ensuite, vous voulez le diviser pour ne conserver que les sous-chaînes significatives:

 array = ssortingng.split(/, /) 

Et à la fin, vous n’avez besoin que de tous les éléments, à l’exception du premier:

 # We extract and remove the first element from array first_element = array.shift # Now array contains the expected result, you can check it with puts array.inspect 

Est-ce que cela répond à votre question?

 ex="test1,test2,test3,test4,test5" all_but_first=ex.split(/,/)[1..-1] 

Si vous voulez les utiliser comme un tableau que vous connaissiez déjà, sinon vous pouvez utiliser chacun d’eux comme un paramètre différent … essayez ceci:

 parameter1,parameter2,parameter3,parameter4,parameter5 = ex.split(",") 

Désolé un peu tard pour la fête et un peu surpris que personne n’ait mentionné la méthode drop :

 ex="test1, test2, test3, test4, test5" ex.split(",").drop(1).join(",") => "test2,test3,test4,test5" 

Vous pouvez aussi faire ceci:

 Ssortingng is ex="test1, test2, test3, test4, test5" array = ex.split(/,/) array.size.times do |i| p array[i] end 

Essayez split(",")[i]i est l’index dans le tableau de résultats. split donne tableau ci-dessous

 ["test1", " test2", " test3", " test4", " test5"] 

dont l’élément est accessible par index.