it-swarm.com.de

Wie kann ich einen String nach Leerzeichen aufteilen und führende und nachgestellte Leerzeichen mithilfe eines regulären Ausdrucks in ein Array von Wörtern ignorieren?

Normalerweise verwende ich den folgenden Code in JavaScript, um eine Zeichenfolge nach Leerzeichen aufzuteilen.

"The quick brown fox jumps over the lazy dog.".split(/\s+/);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]

Dies funktioniert natürlich auch, wenn zwischen den Wörtern mehrere Leerzeichen stehen.

"The  quick brown fox     jumps over the lazy   dog.".split(/\s+/);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]

Das Problem ist, wenn ich eine Zeichenfolge mit führenden oder nachgestellten Leerzeichen habe. In diesem Fall enthält das resultierende String-Array ein leeres Zeichen am Anfang und/oder Ende des Arrays.

"  The quick brown fox jumps over the lazy dog. ".split(/\s+/);
// ["", "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog.", ""]

Es ist eine triviale Aufgabe, solche leeren Zeichen zu entfernen, aber ich würde mich lieber im regulären Ausdruck darum kümmern, wenn das überhaupt möglich ist. Weiß jemand, mit welchem ​​regulären Ausdruck ich dieses Ziel erreichen könnte?

63
natlee75

Wenn Sie sich mehr für die Bits interessieren, die kein Leerzeichen sind, können Sie den Nicht-Leerzeichen zuordnen, anstatt das Leerzeichen aufzuteilen.

"  The quick brown fox jumps over the lazy dog. ".match(/\S+/g);

Beachten Sie, dass das Folgende null zurückgibt:

"   ".match(/\S+/g)

Das beste zu lernen ist also:

str.match(/\S+/g) || []
99
kennebec

" The quick brown fox jumps over the lazy dog. ".trim().split(/\s+/);

42
Josh

Anstatt Whitespace-Sequenzen aufzuteilen, können Sie auch beliebige Nicht-Whitespace-Sequenzen zuordnen:

"  The quick brown fox jumps over the lazy dog. ".match(/\S+/g)
12
Gumbo

Nicht so elegant wie andere, aber sehr leicht zu verstehen:

    countWords(valOf)
    {
        newArr[];
        let str = valOf;
        let arr = str.split(" ");

        for (let index = 0; index < arr.length; index++) 
       {
           const element = arr[index];
           if(element)
           {
              this.newArr.Push(element);
           }
       }
       this.NumberOfWords = this.newArr.length;

       return this.NumberOfWords;
   }
0
aris