Tracks
/
Elixir
Elixir
/
Übungen
/
Deutscher Systemadministrator
Deutscher Systemadministrator

Deutscher Systemadministrator

Lernübung

Einführung

Charlists

Charlists erstellst du mit dem Sigil ~c.

~c"hello"
Note

Beachte, dass Charlists in älteren Elixir-Versionen mit einfachen Anführungszeichen als 'hello' dargestellt werden.

Obwohl sie Strings sehr ähnlich sehen, sind diese beiden Datentypen ganz verschieden voneinander. Eine Charlist ist eine Liste von Ganzzahlen. Die Ganzzahlen stehen für die Unicode-Werte eines bestimmten Zeichens, auch Codepunkte genannt.

[65, 66, 67]
# => ~c"ABC"

Du kannst einem Zeichen ein ? voranstellen, um seinen Codepunkt zu erhalten.

?A
# => 65

[?:, ?)]
# => ~c":)"

Weil Charlists Listen sind, kannst du mit ihnen genauso arbeiten wie mit jeder anderen Liste, nämlich mit Rekursion und Pattern Matching.

[first_letter | _] = ~c"cat"
first_letter
# => 99

Du kannst zwei Listen mit ++ verketten.

~c"hi" ++ ~c"!"
# => ~c"hi!"

Je länger die erste Liste ist, desto langsamer läuft das Verketten. Deshalb solltest du es vermeiden, wiederholt an Listen beliebiger Länge anzuhängen.

Case

case ist eine Kontrollstruktur, mit der du einen gegebenen Wert mit vielen Mustern vergleichen kannst. Die Klauseln in einem case-Ausdruck werden von oben nach unten ausgewertet, bis eine Übereinstimmung gefunden wird.

age = 15

case age do
  0 -> ~c"infant"
  age when age < 4 -> ~c"baby"
  age when age < 13 -> ~c"child"
  age when age < 18 -> ~c"teenager"
  _ -> ~c"adult"
end

# => ~c"teenager"

Anleitung

Du arbeitest als Systemadministrator für ein großes Unternehmen in München. Zu deinen Aufgaben gehört die Verwaltung von E-Mail-Konten.

Immer wieder beschweren sich Leute bei dir, sie könnten Herrn Müller keine E-Mails schreiben. Schnell wird dir klar, dass der Großteil des Unternehmens einen alten E-Mail-Client verwendet, der müller@firma.de wegen des Nicht-ASCII-Zeichens nicht als gültige E-Mail-Adresse erkennt.

Den Leuten zu sagen, sie sollen ihren liebsten alten E-Mail-Client aufgeben, ist ein aussichtsloses Unterfangen. Also beschließt du, für alle E-Mail-Konten bereinigte Aliase anzulegen.

1. Bereinige vorhandene Benutzernamen, indem du alles außer Kleinbuchstaben entfernst

Implementiere die Funktion sanitize/1. Sie soll einen Benutzernamen als Charlist entgegennehmen und den Benutzernamen zurückgeben, aus dem alle Zeichen außer Kleinbuchstaben entfernt wurden.

Username.sanitize(~c"schmidt1985")
# => ~c"schmidt"

2. Erlaube Unterstriche

Erweitere die Funktion sanitize/1. Sie soll Unterstriche nicht aus dem Benutzernamen entfernen.

Username.sanitize(~c"mark_fischer$$$")
# => ~c"mark_fischer"

3. Ersetze deutsche Zeichen

Im deutschen Alphabet gibt es 4 Nicht-ASCII-Zeichen, und für alle gibt es allgemein bekannte ASCII-Ersatzschreibweisen.

Deutsches Zeichen ASCII-Ersatz
ä ae
ö oe
ü ue
ß ss

Erweitere die Funktion sanitize/1. Sie soll deutsche Zeichen gemäß der Tabelle ersetzen. Du kannst davon ausgehen, dass alle Benutzernamen bereits kleingeschrieben sind.

Username.sanitize(~c"cäcilie_weiß")
# => ~c"caecilie_weiss"
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Elixir Exercism

Bereit, mit Deutscher Systemadministrator zu starten?

Melde dich bei Exercism an, um Elixir mit 58 Konzepte168 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.