Bearbeiten von „Datei search engine.dart“
Zur Navigation springen
Zur Suche springen
Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 170: | Zeile 170: | ||
** <code>for (var match2 in formatPlaceholders.allMatches(format))</code> | ** <code>for (var match2 in formatPlaceholders.allMatches(format))</code> | ||
*** <code>formatPlaceholders</code> ist ein regulärer Ausdruck, der alle Platzhalter im Format beschreibt: <code>RegExp(r'%[#fpnFehcl1-9]%')</code> Zwei Prozentzeichen, zwischen denen eines der aufgeführten Zeichen <code>#</code> ... <code>l</code> oder eine Ziffer <code>1-9</code> liegt. | *** <code>formatPlaceholders</code> ist ein regulärer Ausdruck, der alle Platzhalter im Format beschreibt: <code>RegExp(r'%[#fpnFehcl1-9]%')</code> Zwei Prozentzeichen, zwischen denen eines der aufgeführten Zeichen <code>#</code> ... <code>l</code> oder eine Ziffer <code>1-9</code> liegt. | ||
*** Die Klasse <code>RegExp</code> liefert mit der Methode <code>allMatches()< | *** Die Klasse <code>RegExp</code> liefert mit der Methode <code>allMatches()<code> nacheinander alle Treffer des regulären Ausdrucks in dem als Parameter übergebenen String (hier <code>format</code>) liefert. Über diese Treffer wird die Schleife gebildet. | ||
** <code>final placeholder = match2.group(0);</code> Der Treffer (beispielsweise <code>%f%</code> | ** <code>final placeholder = match2.group(0);</code> Der Treffer (beispielsweise <code>%f%</code> wird in der Variablen <code>placeholder</code> gemerkt. | ||
** <code>switch(placeholder[1])</code> Es wird das zweite Zeichen (gezählt wird ab 0) als Fallunterscheidung genommen: | ** <code>switch(placeholder[1])</code> Es wird das zweite Zeichen (gezählt wird ab 0) als Fallunterscheidung genommen: | ||
*** <code>case '#':</code> Ist dieses 2.te Zeichen ein <code>#</code> ... | *** <code>case '#':</code> Ist dieses 2.te Zeichen ein <code>#</code> ... | ||
*** <code>line2 = line2.replaceAll(placeholder, lineNo.toString());</code> | *** <code>line2 = line2.replaceAll(placeholder, lineNo.toString());</code> werden alle diese Platzhalter (<code>%#%</code> durch die Zeilenummer, gewandelt in einen String, ersetzt. | ||
** Nach diesem Schema werden die auch die anderen Platzhalter ersetzt. | ** Nach diesem Schema werden die auch die anderen Platzhalter ersetzt. | ||
** <code>match?.group(0) ?? "</code> Der Operator <code>?.</code> sorgt dafür, dass kein Fehler auftritt, wenn das Objekt <code>match</code> vor dem Operator <code>null</code> ist, sondern das Ergebnis von <code>match?.group(0)</code> ist dann <code>null</code>. Der Operator <code>??</code> wird dann aktiv, wenn er Operand vor dem Operator null ist, dann ist das Gesamtergebnis der Operand nach dem Operator, also der Leerstring. | ** <code>match?.group(0) ?? "</code> Der Operator <code>?.</code> sorgt dafür, dass kein Fehler auftritt, wenn das Objekt <code>match</code> vor dem Operator <code>null</code> ist, sondern das Ergebnis von <code>match?.group(0)</code> ist dann <code>null</code>. Der Operator <code>??</code> wird dann aktiv, wenn er Operand vor dem Operator null ist, dann ist das Gesamtergebnis der Operand nach dem Operator, also der Leerstring. |