// Der Märchenonkel kommt zu Ihnen mit einer Bitte.// Es fällt ihm schwer sich immer wieder neue Geschichten auszudenken.// Stattdessen möchte er ein Programm nutzen, um bestehende Geschichten abzuändern.// Das Programm soll eine bestehende Geschichte in Form eines Textes (Datentyp string)// einlesen. Außerdem bekommt es eine Reihe von Ersetzungen, die in dem Text durchgeführt werden sollen.// Die Ersetzungen haben die Form "alter Text/neuer Text".// Alle Vorkomnisse von "alter Text" in der Geschichte sollen mit "neuer Text" ersetzt werden.// Es können mehrere Ersetzungen angegeben werden indem mehrere Ersetzungen jeweils mit// Zeilenumbruch (\n) getrennt angeführt werden. // Schreiben Sie eine Funktion storyGen(text, replacements)// die den Text, sowie die durchzuführenden Ersetzungen als Parameter bekommt// und einen neuen Text zurückliefert in dem die Ersetzungen durchgeführt wurden. // Damit Sie Ihr Programm schöner strukturieren, schreiben Sie außerdem eine// Hilfsfunktion readReplacements(replacements), das die Ersetzungen einliest// und in ein Array aus Objekten umwandelt, mit dem die Funktion storyGen besser arbeiten kann.// Wenn zum Beispiel diese Ersetzungen eingelesen werden:// let replacements = "warm/kalt\noben/unten";// wird daraus dieses Array:// [ {before: "warm", after: "kalt"}, {before: "oben", after: "unten"}] let data = "Es war ein schöner Morgen, als ein alter Mann bei Bilbo anklopfte. " + "Wir wollen hier keine Abenteuer, vielen Dank, wimmelte er den ungebetenen " + "Besucher ab. Überhaupt, wie heißen Sie eigentlich? - Ich bin Gandalf, antwortete dieser." + "Und damit dämmerte es Bilbo: Das Abenteuer hatte schon begonnen!"; let replacements = `Bilbo/Iron ManMorgen/AbendGandalf/Groot`; function readReplacements(replacements) { // TODO} function storyGen(text, replacements) { let rep = readReplacements(replacements); // TODO} console.log(storyGen(data, replacements)); /////////////////////////////////////// // Erstelle eine JavaScript Funktion, die bestimmte Wörter in einem Text// durch *-Zeichen zensiert.// Die Funktion erhält den Text, sowie ein Array mit dem verbotenen Wörtern.// filterMessage(message, blockedWords)// Die verbotenen Wörter sollen durch eine Reihe von *-Zeichen ersetzt werden// die genau so lange ist, wie das verbotene Wort.const blockedWords = ["Hass", "Gewalt", "Diskriminierung"];const message = "Ich bin gegen Hass und Gewalt, aber für Liebe und Frieden.";// Gewünschte Ausgabe:// "Ich bin gegen **** und ****** aber für Liebe und Frieden." function filterMessage(message, blockedWords) { // TODO} console.log(filterMessage(message, blockedWords)); ////////////////////////////////////////////// Erstelle eine Funktion, die überprüft wie stark ein Passwort ist.// Um das zu ermitteln werden Punkte vergeben.// Wenn das Passwort eine bestimmte Eigenschaft hat, erhält es dafür folgende Punkte:// Das Passwort enthält Kleinbuchstaben: +1 Punkt// Das Passwort enthält Großbuchstaben: +1 Punkt// Das Passwort enthält Sonderzeichen: +1 Punkt// Das Passwort ist mindestens 6 Zeichen lang: +1 Punkt// Das Passwort ist mindestens 8 Zeichen lang: +1 Punkt // Die folgende Datenstruktur enthält jeweils das Minimum an benötigten Punkten,// für den jeweiligen Text, der von der Funktion als Bewertung zurückgegeben wird.const passwordScore = [ { min: 4, score: "excellent" }, { min: 3, score: "good" }, { min: 2, score: "ok" }, { min: 0, score: "weak" },]; // Folgende Auflistungen können verwendet werden.const lowerChars = [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "ä", "ö", "ü", "ß",];const upperChars = [ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Ä", "Ö", "Ü",];const specialChars = [ "!", '"', "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", ":", ";", "<", "=", ">", "?", "@", "[", "\\", "]", "^", "_", "`", "{", "|", "}", "~",]; function passwordStrength(pwd) { // TODO} console.log(passwordStrength("hugo"));console.log(passwordStrength("Hugo"));console.log(passwordStrength("Hugo!"));console.log(passwordStrength("HugoHugo!")); ////////////////////////////////////////////// Schreibe eine Funktion analyseText(text, keywords)// Die Funktion soll analysieren wie oft bestimmte Schlüsselworter (keywords)// einem Text vorkommen.// Bsp:const text = "In diesem Übungs-Text sollen bestimmte Schlüsselwörter wie JavaScript, Übung und Online gesucht werden und gezählt werden, wie oft sie vorkommen.";const keywords = ["JavaScript", "Übung", "Online"];// Gewünschtes Ergebnis:// [// { word: 'JavaScript', count: 1 },// { word: 'Übung', count: 2 },// { word: 'Online', count: 1 }// ] function analyseText(text, keywords) { // TODO} const analyseResult = analyseText(text, keywords);console.log(analyseResult); //////////////////////////////////////////////////// // Eine URL besteht aus mehreren Bestandteilen.// Am Beispiel der URL: "http://www.google.com:80/search"// "http" ist das Protokoll (protocol).// Es steht am Beginn und endet beim ersten Doppelpunkt// "www.goole.com" ist der Server (server).// Es steht nach dem ersten Doppelpunkt gefolgt von zwei Schrägstrichen// und endet beim zweiten Doppelpunkt.// "80" ist der Port (port).// Es steht nach dem zweiten Doppelpunkt und endet beim ersten// Schrägstrich nach dem zweiten Doppelpunkt.// "/search" ist der Pfad (path).// Es Beginnt beim ersten Schrägstrich nach dem zweiten Doppelpunkt. // Schreibe eine Funktion, die eine beliebige URL einliest// und in ein Objekt umwandelt, das den folgenden Aufbau hat:// {// protocol: "http",// server: "www.google.com",// port: "80",// path: "search"// } function parseUrl(url) { // TODO} const url = "http://www.google.com:80/search";let urlParts = parseUrl(url) || {};console.log( "Protokoll:", urlParts.protocol, "Server:", urlParts.server, "Port:", urlParts.port, "Path:", urlParts.path);