Files
freeCodeCamp/curriculum/challenges/german/02-javascript-algorithms-and-data-structures/regular-expressions/use-capture-groups-to-search-and-replace.md
2022-08-19 20:53:29 +02:00

2.7 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d7dbb367417b2b2512bab Erfassungsgruppen für das Suchen und Ersetzen verwenden 1 301368 use-capture-groups-to-search-and-replace

--description--

Die Suche ist nützlich. Du kannst die Suche aber noch leistungsfähiger machen, indem du den Text, den du gefunden hast, auch veränderst (oder ersetzt).

Du kannst Text in einem String suchen und ersetzen, indem du .replace() auf einen String anwendest. Die Eingabe für .replace() ist zunächst das Regex-Muster, nach dem du suchen willst. Der zweite Parameter ist der String, der die Übereinstimmung ersetzen soll, oder eine Funktion, die etwas tut.

let wrongText = "The sky is silver.";
let silverRegex = /silver/;
wrongText.replace(silverRegex, "blue");

Der replace-Aufruf würde den String The sky is blue. zurückgeben.

Du kannst auch auf Erfassungsgruppen in dem Ersetzungsstring mit Dollarzeichen ($) zugreifen.

"Code Camp".replace(/(\w+)\s(\w+)/, '$2 $1');

Der replace-Aufruf würde den String Camp Code zurückgeben.

--instructions--

Schreibe einen regulären Ausdruck fixRegex mit drei Erfassungsgruppen, der nach jedem Wort in dem String one two three sucht. Aktualisiere dann die Variable replaceText, um one two three durch den String three two one zu ersetzen und weise das Ergebnis der Variablen result zu. Achte darauf, dass du Erfassungsgruppen in dem Ersetzungsstring mit der Syntax des Dollarzeichens ($) verwendest.

--hints--

Du solltest .replace() für das Suchen und Ersetzen verwenden.

assert(code.match(/\.replace\(.*\)/));

Dein regulärer Ausdruck sollte den String one two three in den String three two one ändern.

assert(result === 'three two one');

Du solltest die letzte Zeile nicht ändern.

assert(code.match(/result\s*=\s*str\.replace\(.*?\)/));

fixRegex sollte mindestens drei Erfassungsgruppen verwenden.

assert(new RegExp(fixRegex.source + '|').exec('').length - 1 >= 3);

replaceText sollte eingeklammerte Teilmusterstrings verwenden (d.h. der n-te eingeklammerte Teilmusterstring, $n, entspricht der n-ten Erfassungsgruppe).

{
  const re = /(\$\d{1,2})+(?:[\D]|\b)/g;
  assert(replaceText.match(re).length >= 3);
}

--seed--

--seed-contents--

let str = "one two three";
let fixRegex = /change/; // Change this line
let replaceText = ""; // Change this line
let result = str.replace(fixRegex, replaceText);

--solutions--

let str = "one two three";
let fixRegex = /(\w+) (\w+) (\w+)/g; // Change this line
let replaceText = "$3 $2 $1"; // Change this line
let result = str.replace(fixRegex, replaceText);