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?
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) || []
" The quick brown fox jumps over the lazy dog. ".trim().split(/\s+/);
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)
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;
}