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 dann, 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 nachfolgenden Leerzeichen habe. In diesem Fall enthält das resultierende Array von Zeichenfolgen 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 dies überhaupt möglich ist. Weiß jemand, welchen regulären Ausdruck ich verwenden könnte, um dieses Ziel zu erreichen?
javascript
regex
string
whitespace
removing-whitespace
natlee75
quelle
quelle
split
wird verwendet, um einen String zu teilen , nicht um ihn zu mutieren . Sehen Sie, wie man einen String in JavaScript schneidet? .Antworten:
Wenn Sie mehr an Bits interessiert sind, die keine Leerzeichen sind, können Sie die Nicht-Leerzeichen abgleichen, anstatt sie auf Leerzeichen aufzuteilen.
" The quick brown fox jumps over the lazy dog. ".match(/\S+/g);
Beachten Sie, dass Folgendes zurückgegeben wird
null
:" ".match(/\S+/g)
Das beste Muster zum Lernen ist also:
str.match(/\S+/g) || []
quelle
' '.match(/\S+/g)
kehrtnull
statt[]
!" The quick brown fox jumps over the lazy dog. ".trim().split(/\s+/);
quelle
' '.trim().split(/\s+/)
kehrt zurück[""]
!Anstatt bei Leerzeichenfolgen zu teilen, können Sie auch Nicht-Leerzeichenfolgen zuordnen:
" The quick brown fox jumps over the lazy dog. ".match(/\S+/g)
quelle
Nicht elegant wie andere Codes, aber sehr einfach 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) { newArr.push(element); } } const NumberOfWords = newArr.length; return NumberOfWords; }
quelle