Tracks
/
Elm
Elm
/
Übungen
/
Blitzsauber
Blitzsauber

Blitzsauber

Lernübung

Einführung

Strings

Zeichen und Strings bilden die Grundlage für die Textdarstellung in Elm. Man kann sich Strings als Listen von Zeichen vorstellen, und die meisten Funktionen aus List haben ihr Gegenstück im Modul String.

Zeichen

Der Typ Char repräsentiert ein einzelnes Unicode-Zeichen und wird mit einfachen Anführungszeichen geschrieben, z. B. 'a'. Das Modul Char bietet Prädikatfunktionen (Char -> Bool), mit denen du Eigenschaften eines Zeichens prüfen kannst: isUpper, isLower, isAlpha und isAlphaNum. Außerdem bietet das Modul Funktionen, um ein Zeichen umzuwandeln: toUpper, toLower, toLocaleUpper und toLocaleLower, sowie Funktionen, um es in seinen numerischen Unicode-Wert (Int) umzuwandeln und daraus zurück, nämlich toCode und fromCode.

Strings

Der Typ String bietet eine eingebaute Darstellung für effiziente String-Manipulation und kann jede Folge von Unicode-Zeichen darstellen, z. B. "this is an Elm string." Mehrzeilige Strings werden mit dreifachen doppelten Anführungszeichen dargestellt und dürfen nicht maskierte Anführungszeichen und Zeilenumbrüche enthalten.

"""
    This is a multiline string.
All line-breaks and whitespace,
are preserved. 
"""

String-Funktionen

Das Modul String enthält alle Funktionen, die in der folgenden Tabelle zusammengefasst sind. Zu den am häufigsten verwendeten Funktionen gehören:

cons : Char -> String -> String fügt ein Zeichen am Anfang eines Strings hinzu.

cons 'T' "he truth is out there" 
    --> "The truth is out there"

(++): String -> String -> String hängt zwei Strings aneinander.

"butter" ++ "fly" 
    --> "butterfly"

split : String -> String -> List String teilt einen String am angegebenen Trennzeichen in eine Liste von Strings auf.

split ";" "cat;dog;cow" 
    --> ["cat", "dog", "cow"]

join : String -> List String -> String fügt eine Liste von Strings mit einem angegebenen Trennzeichen zusammen.

join "a" ["H", "w", "ii", "n"] 
    --> "Hawaiian"

replace : String -> String -> String -> String ersetzt alle Vorkommen eines angegebenen Teilstrings.

replace "Hello" "Goodbye cruel" "Hello world." 
    --> "Goodbye cruel world."

length : String -> Int gibt die Anzahl der Zeichen in einem String zurück.

length "Hello world." 
    --> 12

toInt : String -> Maybe Int versucht, einen String in Just Int umzuwandeln, und gibt für falsch formatierte Strings Nothing zurück.

toInt "-42" 
    --> Just -42

contains : String -> String -> Bool prüft, ob der zweite String den ersten enthält.

contains "the" "theory" 
    --> True

map : (Char -> Char) -> String -> String wendet eine angegebene Funktion auf jedes Char im String an. Beachte, dass die übergebene Funktion eine Abbildung von Char nach Char sein muss.

map (\c -> if c == '/' then '.' else c) "a/b/c" 
    --> "a.b.c"

Alle String-Funktionen:

Bearbeiten Teilstrings Prüfen Umwandeln Höhere Ordnung
reverse slice length toInt map
repeat left isEmpty fromInt filter
replace right contains toFloat foldl
append dropLeft startsWith fromFloat foldr
concat dropRight indexes toList any
split fromList all
join fromChar
words
lines
cons
uncons

Anleitung

In dieser Übung implementierst du eine Teilmenge von Hilfsfunktionen, mit denen ein Entwickler Bezeichnernamen bereinigen kann.

In den 5 Aufgaben baust du nach und nach die Funktion clean auf. Ein gültiger Bezeichner besteht aus null oder mehr Buchstaben und Unterstrichen.

Wenn ein leerer String an die Funktion clean übergeben wird, sollte ein leerer String zurückgegeben werden.

1. Leerzeichen durch Unterstriche ersetzen

Implementiere eine Funktion clean1, die alle Leerzeichen durch Unterstriche ersetzt. Das gilt auch für führende und nachfolgende Leerzeichen.

clean1 "my   Id"
    --> "my___Id"

2. Steuerzeichen durch den großgeschriebenen String "[CTRL]" ersetzen

Implementiere clean2 so, dass es alles tut, was die vorherige Funktion tut, und gängige Steuerzeichen (\n, \t und \r) durch den String "[CTRL]" ersetzt.

clean2 "my\nId"
    --> "my[CTRL]Id",

3. Kebab-Case in camelCase umwandeln

Implementiere clean3 so, dass es alles tut, was die vorherige Funktion tut, und Kebab-Case in camelCase umwandelt.

clean3 "à-ḃç"
    --> "àḂç"

4. Ziffern weglassen

Implementiere clean4 so, dass es alles tut, was die vorherige Funktion tut, und alle Ziffern weglässt.

clean4 "123"
    --> ""

5. Griechische Kleinbuchstaben weglassen

Implementiere schließlich clean so, dass es alles tut, was die vorherige Funktion tut, und alle griechischen Buchstaben im Bereich 'α' bis 'ω' weglässt.

clean "My Οβιεγτ Finder"
    --> "My_Ο_Finder"
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Elm Exercism

Bereit, mit Blitzsauber zu starten?

Melde dich bei Exercism an, um Elm mit 28 Konzepte110 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.