wake-up-neo.net

Wie kann man einen String in Ruby aufteilen und alle Elemente außer dem ersten erhalten?

Zeichenfolge ist ex="test1, test2, test3, test4, test5"

wenn ich benutze 

ex.split(",").first

es kehrt zurück

"test1"

Jetzt möchte ich die restlichen Elemente erhalten, d. H. Wenn ich benutze 

ex.split(",").last

es kehrt nur zurück

"test5"

Wie bekomme ich die restlichen Elemente, die zuerst übersprungen werden?

73
sgi

Versuche dies:

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

Nun ist first der erste Wert, rest der Rest des Arrays.

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

Die 2 am Ende sagt: in 2 Teile geteilt, nicht mehr.

normalerweise wird der Wert in so viele Stücke wie möglich geschnitten. Mit einem zweiten Wert können Sie die Anzahl der Stücke begrenzen, die Sie erhalten. Mit ex.split(',', 2) erhalten Sie:

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

als Array statt:

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

Da Sie ein Array haben, ist das, was Sie wirklich wollen, Array#slice , nicht split .

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

Sie haben wahrscheinlich ein paar Dinge falsch geschrieben. Von dem, was ich erfahre, fängst du mit einer Zeichenfolge an, wie:

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

Dann möchten Sie es teilen, um nur die signifikanten Teilzeichenfolgen beizubehalten:

array = string.split(/, /)

Und am Ende brauchen Sie nur alle Elemente außer dem ersten:

# 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

Hat das Ihre Frage beantwortet?

9
bltxd

Entschuldigung, ein bisschen zu spät zur Party und ein bisschen überrascht, dass niemand die drop - Methode erwähnt hat:

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

wenn Sie sie als Array verwenden möchten, wussten Sie es bereits, ansonsten können Sie jeden von ihnen als einen anderen Parameter verwenden.

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

Sie können dies auch tun:

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

Versuchen Sie split(",")[i], wobei i der Index im Ergebnis-Array ist. split gibt das folgende Array an

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

auf dessen Element kann per Index zugegriffen werden.

0
lalit