web-dev-qa-db-fra.com

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 revient

"test1"

Maintenant, je veux récupérer les éléments restants, c’est-à-dire `" test2, test3, test4, test5 ". Si j'utilise 

ex.split(",").last

il ne retourne que

"test5"

Comment faire en sorte que tous les éléments restants soient sautés en premier?

73
sgi

Essaye ça:

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

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

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

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

normalement, split divise la valeur en autant de pièces que possible. En utilisant une seconde valeur, vous pouvez 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"]
41
user163365

Puisque vous avez un tableau, ce que vous vraiment voulez, c'est Array#slice _, pas split.

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

Vous avez probablement mal saisi certaines choses. D'après ce que je comprends, vous commencez avec une chaîne telle que:

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

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

array = string.split(/, /)

Et à la fin, vous n’avez besoin que de tous les éléments, à l’exclusion 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 a répondu à votre question?

9
bltxd

Désolé un peu tard pour la fête et un peu surpris que personne ne mentionne la drop méthode

ex="test1, test2, test3, test4, test5"
ex.split(",").drop(1).join(",")
=> "test2,test3,test4,test5"
5
Anand Shah
ex="test1,test2,test3,test4,test5"
all_but_first=ex.split(/,/)[1..-1]
5
Jonas Elfström

si vous voulez les utiliser comme un tableau, vous le saviez déjà, sinon vous pouvez utiliser chacun d'eux comme paramètre différent ....

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

Vous pouvez aussi faire ceci:

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

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

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

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

0
lalit