Menu
Coddy logo textTech

Array Slicing mit Bereichen

Teil des Abschnitts Grundlagen der Ruby-Journey von Coddy — Lektion 69 von 88.

Manchmal müssen Sie einen Teil eines Arrays extrahieren, anstatt auf einzelne Elemente zuzugreifen. Ruby ermöglicht es Ihnen, Arrays mithilfe von Ranges zu slicen, wodurch ein neues Array erstellt wird, das nur die von Ihnen angegebenen Elemente enthält.

Um ein Array mit einem Bereich zu zerteilen, setzen Sie den Bereich in eckige Klammern:

numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]

puts slice  # Ausgabe: 20, 30, 40

Der Bereich 1..3 enthält Elemente an den Indizes 1, 2 und 3. Denken Sie daran, dass Array-Indizes bei 0 beginnen, daher ist Index 1 das zweite Element.

Du kannst auch den Bereich mit drei Punkten (...) verwenden, um den letzten Index auszuschließen:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]

puts slice  # Ausgabe: a, b, c

Hier umfasst 0...3 die Indizes 0, 1 und 2, stoppt jedoch vor Index 3.

Negative Indizes funktionieren auch mit Bereichen. Sie zählen vom Ende des Arrays aus, wobei -1 das letzte Element ist:

colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]

puts slice  # Ausgabe: green, blue, yellow

Dies extrahiert alles von Index 1 bis zum letzten Element, was nützlich ist, wenn Sie das erste Element überspringen möchten, ohne die Länge des Arrays zu kennen.

challenge icon

Aufgabe

Einfach

Lies zwei Eingaben ein:

  1. Eine einzelne Zeile mit durch Kommas getrennten Ganzzahlen (z. B. 10,20,30,40,50,60,70)
  2. Eine Bereichsangabe im Format start..end oder start...end (z. B. 2..5 oder 1...4)

Teile die erste Eingabe in ein Array von Ganzzahlen auf. Verwende dann den Bereich aus der zweiten Eingabe, um das Array zu schneiden (slice), und gib jedes Element des geschnittenen Teils in einer eigenen Zeile aus.

Die Bereichseingabe verwendet entweder zwei Punkte (..), um den Endindex einzuschließen, oder drei Punkte (...), um ihn auszuschließen.

Wenn die Eingaben beispielsweise 10,20,30,40,50,60,70 und 2..5 sind, sollte die Ausgabe wie folgt aussehen:

30
40
50
60

Wenn die Eingaben 5,10,15,20,25,30 und 0...3 sind, sollte die Ausgabe wie folgt aussehen:

5
10
15

Wenn die Eingaben 100,200,300,400,500 und 1..-1 sind, sollte die Ausgabe wie folgt aussehen:

200
300
400
500

Wenn die Eingaben a,b,c,d,e,f und -3..-1 sind, sollte die Ausgabe wie folgt aussehen:

d
e
f

Spickzettel

Um einen Teil eines Arrays zu extrahieren, verwenden Sie Bereiche innerhalb eckiger Klammern:

numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]
# Gibt [20, 30, 40] zurück (Indizes 1, 2 und 3)

Verwenden Sie zwei Punkte (..), um den Endindex einzuschließen:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0..2]
# Gibt ["a", "b", "c"] zurück (Indizes 0, 1 und 2)

Verwenden Sie drei Punkte (...), um den Endindex auszuschließen:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]
# Gibt ["a", "b", "c"] zurück (Indizes 0, 1 und 2, stoppt vor 3)

Negative Indizes zählen vom Ende des Arrays (-1 ist das letzte Element):

colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]
# Gibt ["green", "blue", "yellow"] zurück (von Index 1 bis zum letzten Element)

Probier es selbst

# Lies die durch Kommas getrennten Werte ein
input_values = gets.chomp

# Lies die Bereichsspezifikation ein
range_spec = gets.chomp

# TODO: Schreibe deinen Code unten
# 1. Teile input_values in ein Array auf
# 2. Analysiere range_spec, um Start, Ende und die Verwendung von .. oder ... zu bestimmen
# 3. Schneide das Array mit dem entsprechenden Bereich aus
# 4. Gib jedes Element des ausgeschnittenen Teils in einer eigenen Zeile aus
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen