Menu
Coddy logo textTech

Strings durchsuchen

Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 4 von 64.

grepl(pattern, x) gibt für jedes Element von x, das pattern enthält, TRUE zurück. Füge fixed = TRUE hinzu, um nach den exakten Zeichen zu suchen. Ohne diese Angabe ist das Muster ein regulärer Ausdruck, in dem Zeichen wie . und ? besondere Bedeutungen haben.

files <- c("report.csv", "photo.png", "data.csv")
print(grepl(".csv", files, fixed = TRUE))
print(files[grepl(".csv", files, fixed = TRUE)])

Ausgabe:

[1]  TRUE FALSE  TRUE
[1] "report.csv" "data.csv"  

startsWith(x, prefix) und endsWith(x, suffix) prüfen nur den Anfang oder das Ende jeder Zeichenkette. Alle diese Suchen unterscheiden zwischen Groß- und Kleinschreibung. Verwende daher zuerst tolower(), um die Groß- und Kleinschreibung zu ignorieren.

names <- c("Anna", "bob", "Andre")
print(startsWith(names, "An"))
print(startsWith(tolower(names), "b"))

Ausgabe:

[1]  TRUE FALSE  TRUE
[1] FALSE  TRUE FALSE

Die Ergebnisse sind logische Vektoren, daher zählt sum() die Übereinstimmungen und any() prüft, ob mindestens eine vorhanden ist:

emails <- c("a@x.com", "bad-address", "c@y.org")
valid <- grepl("@", emails, fixed = TRUE)
print(sum(valid))
print(any(!valid))

Ausgabe:

[1] 2
[1] TRUE

grep(pattern, x) gibt die Positionen der übereinstimmenden Elemente zurück, und grep(pattern, x, value = TRUE) die Elemente selbst:

files <- c("a.csv", "b.txt", "c.csv")
print(grep(".csv", files, fixed = TRUE))
print(grep(".csv", files, fixed = TRUE, value = TRUE))

Ausgabe:

[1] 1 3
[1] "a.csv" "c.csv"
challenge icon

Aufgabe

Einfach

Vervollständige count_domain(emails, domain). Gib zurück, wie viele Adressen in emails mit @ gefolgt von domain enden. Ignoriere die Groß- und Kleinschreibung: CY@CODDY.TECH zählt für die Domain coddy.tech.

Der bereitgestellte Code liest die Adressen als durch Kommas getrennte Zeile und anschließend die Domain ein und gibt die zurückgegebene Zahl aus.

Probier es selbst

count_domain <- function(emails, domain) {
  # Schreibe deinen Code hier
  0
}

# Mitgelieferter Ein-/Ausgabe-Code: belasse ihn unverändert
input <- suppressWarnings(readLines(file("stdin")))
emails <- strsplit(input[1], ",")[[1]]
cat(count_domain(emails, input[2]), sep = "\n")
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 Logik und Ablaufsteuerung

Übe selbstständig: Online-R-Compiler