Iterieren über Strings
Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy — Lektion 3 von 56.
Ein Ruby-String ist eine Sequenz von Zeichen, und Sie können mit each_char direkt darüber iterieren:
"ruby".each_char do |c|
puts c
end
# r
# u
# b
# yWenn Sie auch den Index benötigen, verwenden Sie each_char.with_index:
"hi".each_char.with_index do |c, i|
puts "#{i}: #{c}"
end
# 0: h
# 1: iUm ein Array von Zeichen in einem Durchgang zu erhalten, rufen Sie chars auf:
"ruby".chars # ["r", "u", "b", "y"]Aufgabe
EinfachLies eine einzelne Eingabezeile ein. Zähle, wie viele Vokale (a, e, i, o, u, unabhängig von Groß- und Kleinschreibung) sie enthält, und gib Folgendes aus:
Vowels: <count>Für die Eingabe Hello Ruby lautet die Ausgabe Vowels: 3: e, o, u. (y wird nicht mitgezählt.)
Spickzettel
Iteriere über jedes Zeichen in einem String mit each_char:
"ruby".each_char do |c|
puts c
endVerwende each_char.with_index, um auch den Index zu erhalten:
"hi".each_char.with_index do |c, i|
puts "#{i}: #{c}"
endKonvertiere einen String in ein Array von Zeichen mit chars:
"ruby".chars # ["r", "u", "b", "y"]Probier es selbst
input = gets.chomp
count = 0
# TODO: Über jedes Zeichen iterieren und Vokale zählen
puts "Vowels: #{count}"
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmfluss
1Strings im Detail
String-Methoden im ÜberblickString-InterpolationIterieren über StringsSplit und JoinRückblick – String Weaver4Blöcke, Procs & Lambdas
Was ist ein Block?do..end vs. geschweifte KlammernDas yield-SchlüsselwortBlock-ParameterProcs und LambdasZusammenfassung – Eigener Iterator7Hashes Teil 2
Hash.new mit StandardwertenIterieren über HashesVerschachtelte HashesZusammenführen und TransformierenRückblick – Häufigkeitszähler10Projekt - Studentenverwaltung
ProjektübersichtStudent hinzufügen5Enumerable-Kraftpaket
Select und RejectMap-VerkettungReduce / Injectcount, all?, any?, none?group_by und partitionsort_by, min_by, max_byZusammenfassung – Data Pipeline8Fortgeschrittene Entscheidungslogik
Case mit Klassen & RegexMulti-Value whenTernärer OperatorInline if / unlessRückblick – Noten-Klassifizierer