So betiteln Sie einen Satz in JavaScript

Erinnerst du dich an die Grundschule, als deine Lehrer dir gezeigt haben, wie man eine Arbeit richtig schreibt? Das erste, mit dem Sie beginnen, ist ein guter Titel, und jeder gute Titel wird richtig großgeschrieben.

Während dieser Algorithmus-Skript-Herausforderung lernen wir, wie man einen Satz in JavaScript betitelt. Letztendlich wird unser Algorithmus einen Satz aufnehmen und den ersten Buchstaben jedes Wortes groß schreiben, als wäre es der Titel eines Papiers.

Algorithmusanweisungen

Geben Sie die angegebene Zeichenfolge mit dem ersten Buchstaben jedes großgeschriebenen Wortes zurück. Stellen Sie sicher, dass der Rest des Wortes in Kleinbuchstaben geschrieben ist. Für den Zweck dieser Übung sollten Sie auch Verbindungswörter wie „das“ und „von“ groß schreiben.

Bereitgestellte Testfälle

  • titleCase("I'm a little tea pot")sollte eine Zeichenfolge zurückgeben.
  • titleCase("I'm a little tea pot")sollte zurückkehren I'm A Little Tea Pot.
  • titleCase("sHoRt AnD sToUt")sollte zurückkehren Short And Stout.
  • titleCase("HERE IS MY HANDLE HERE IS MY SPOUT")sollte zurückkehren Here Is My Handle Here Is My Spout.

Lösung 1: .map () und .slice ()

PEDAC

Das Problem verstehen : Wir haben eine Eingabe, eine Zeichenfolge. Unsere Ausgabe ist auch eine Zeichenfolge. Letztendlich möchten wir die Eingabezeichenfolge mit dem ersten Buchstaben - und nur dem ersten Buchstaben - jedes großgeschriebenen Wortes zurückgeben.

Beispiele / Testfälle : Unsere bereitgestellten Testfälle zeigen, dass wir nur am Anfang jedes Wortes einen Großbuchstaben haben sollten. Wir müssen den Rest in Kleinbuchstaben schreiben. Die bereitgestellten Testfälle zeigen auch, dass wir keine Kurvenbälle in Form von seltsamen zusammengesetzten Wörtern werfen, die durch Symbole anstelle von Leerzeichen getrennt sind. Das sind gute Nachrichten für uns!

Datenstruktur : Wir müssen unsere Eingabezeichenfolge in ein Array umwandeln, um jedes Wort separat zu bearbeiten.

Ein paar Hinweise zu den Methoden, die wir verwenden werden:

Reden wir über .map():

.map() Erstellt ein neues Array mit den Ergebnissen des Aufrufs einer Funktion für jedes Element im Array.

Mit anderen Worten, .map()ermöglicht es uns, jedes Element in einem Array mit einer Funktion zu manipulieren und dann ein neues Array mit den Ergebnissen unserer Manipulation zurückzugeben. Die Funktion kann sowohl auf den aktuellen Wert als auch auf den Index dieses aktuellen Werts abzielen, wie folgt:

array.map((currentValue, Index) => { // manipulate the currentValue in some way})

Wir müssen den Index nicht immer verwenden. Es wird jedoch Zeiten geben, in denen wir Elemente eines Arrays anhand ihres Index als Ziel festlegen müssen. Daher ist es praktisch, dies zu berücksichtigen.

Lassen Sie uns nun ein Beispiel .map()in Aktion sehen. Wir haben ein Array voller Zahlen und wollen jede Zahl mit 2 multiplizieren.

let arrayOfNumbers = [3, 6, 10, 42, 98]arrayOfNumbers.map(number => number * 2)// returns [6, 12, 20, 84, 196]

Lassen Sie uns nun untersuchen .slice():

.slice()extrahiert einen Abschnitt eines Strings und gibt ihn als neuen String zurück. Wenn Sie .slice()eine Zeichenfolge aufrufen, ohne zusätzliche Informationen zu übergeben, wird die gesamte Zeichenfolge zurückgegeben.

"Bastian".slice()// returns "Bastian"

Wir haben die Möglichkeit, .slice()einen beginIndex und einen endIndex wie folgt zu übergeben

.slice(beginIndex, endIndex)

Hier erfahren Sie, .slice()wo Sie mit dem Schneiden beginnen und wo Sie das Schneiden beenden sollen. Beachten Sie, dass Zeichenfolgen nullindiziert sind! Wenn wir also vom 2-indexierten Buchstaben von „Bastian“ bis zum 5-indizierten Buchstaben von „Bastian“ zurückkehren wollten , könnten wir dies tun:

"Bastian".slice(2, 5)// returns "sti"

In diesem Sinne können wir den Wortanfang abhacken und den Rest zurückgeben, indem wir nur einen beginIndex wie folgt übergeben:

"Bastian".slice(3)// returns "tian"

Algorithmus :

  1. Verwandeln Sie alle Buchstaben in strKleinbuchstaben.
  2. Teilen Sie den Kleinbuchstaben strin ein Array auf, wobei jedes Wort ein separates Element im Array ist.
  3. Großschreibung des ersten Buchstabens jedes Elements im Array.
  4. Verbinden Sie jedes Element des Arrays zu einer Zeichenfolge und trennen Sie jedes Wort durch ein Leerzeichen.
  5. Geben Sie die Zeichenfolge mit dem Titel zurück.

Code : Siehe unten!

Ich habe im obigen Code viele unnötige lokale Variablen erstellt, um die Auswirkung jeder Methode auf die Eingabe zu zeigen. Unten habe ich die lokalen Variablen entfernt, alle Methoden miteinander verkettet und die Kommentare entfernt.

Lösung 2: Regex

Warnung! Regex ist nicht die beste Lösung für Anfänger. Reguläre Ausdrücke sind an sich schwierig, und ihre Komplexität ist für viele erfahrene Entwickler ein häufiger Kritikpunkt. Aber hey, ich fühle mich abenteuerlustig, während ich das schreibe, und ich liebe es, mich herauszufordern, Regex besser zu verstehen, wann immer ich kann. Diese Algorithmus-Scripting-Herausforderung eignet sich gut für Regex. Schauen wir uns das an und sehen wir, ob wir unser Verständnis von Regex verbessern können!

PEDAC

Das Problem verstehen : Wir haben eine Eingabe, eine Zeichenfolge. Unsere Ausgabe ist auch eine Zeichenfolge. Letztendlich möchten wir die Eingabezeichenfolge mit dem ersten Buchstaben - und nur dem ersten Buchstaben - jedes großgeschriebenen Wortes zurückgeben.

Beispiele / Testfälle : Unsere bereitgestellten Testfälle zeigen, dass wir nur am Anfang jedes Wortes einen Großbuchstaben haben sollten. Wir müssen den Rest in Kleinbuchstaben schreiben. Die bereitgestellten Testfälle zeigen auch, dass wir keine Kurvenbälle in Form von seltsamen zusammengesetzten Wörtern werfen, die durch Symbole anstelle von Leerzeichen getrennt sind. Das sind gute Nachrichten für uns!

Datenstruktur : Bei Verwendung regulärer Ausdrücke wird unser String nicht in ein Array umgewandelt. JavaScript hat eine raffinierte Methode .replace(), mit der wir so ziemlich alles, was wir wollen, in einer Zeichenfolge als Ziel festlegen und durch etwas anderes ersetzen können. Wir verwenden reguläre Ausdrücke, um auf das abzuzielen, was wir ersetzen möchten.

In regulären Ausdrücken werden so viele Symbole verwendet, dass ich nicht hoffen kann, hier einen umfassenden Überblick darüber zu geben. Ich kann Sie jedoch auf dieses Cheatsheet hinweisen, das ich immer dann verwende, wenn ich Regex verwenden muss.

Was ich tun kann, ist Ihnen zu sagen, dass Regex mit .replace()in JavaScript einem Grundmuster folgt. .replace()Es werden zwei Argumente verwendet: ein Muster (normalerweise ein regulärer Ausdruck) und ein Ersatz (kann eine Zeichenfolge oder eine Funktion sein).

string.replace(regex, function)

In unserer Lösung ersetzen wir den Buchstaben am Anfang jedes Wortes. Wie bringen wir Regex dazu, dies für uns zu tun? Wir sagen .replace(), dass jedes Zeichen nach einem Leerzeichen oder mit dem ersten Zeichen der gesamten Zeichenfolge übereinstimmen soll (da das allererste Wort der Zeichenfolge kein Leerzeichen enthält).

Lassen Sie uns den Regex-Teil unserer Lösung aufschlüsseln. Schauen wir uns dazu das erste Argument der .replace()Funktion an. Dies ist der Regex-Code, der bestimmt, mit welchem ​​Muster wir übereinstimmen und es ersetzen möchten.

// full solution:
function titleCase(str)  return str.toLowerCase().replace(/(^

Wir wollen letztendlich alle Nicht-Leerzeichen finden, die durch dargestellt werden \S.

Dann möchten wir angeben, dass diese Nicht-Leerzeichen am Anfang einer Zeichenfolge ^oder |nach einem Leerzeichen übereinstimmen sollen \s.

Wir fügen den globalen Modifikator hinzu g, um alle derartigen Muster in der gesamten Zeichenfolge zu suchen und zu ersetzen.

Algorithmus :

  1. Verwandeln Sie alle Buchstaben in strKleinbuchstaben.
  2. Ersetzen Sie den ersten Buchstaben jedes Wortes in der Zeichenfolge durch den Großbuchstaben.
  3. Geben Sie die Zeichenfolge mit dem Titel zurück.

Code : Siehe unten!

Wenn Sie andere Lösungen und / oder Vorschläge haben, teilen Sie diese bitte in den Kommentaren mit!

Dieser Artikel ist Teil der Reihe freeCodeCamp Algorithm Scripting.

Dieser Artikel verweist auf freeCodeCamp Basic Algorithm Scripting: Titel Groß- und Kleinschreibung eines Satzes

Sie können mir auf Medium, LinkedIn und GitHub folgen!