通常、JavaScriptで次のコードを使用して、文字列を空白で分割します。
"The quick brown fox jumps over the lazy dog.".split(/\s+/);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]
もちろん、これは単語間に複数の空白文字がある場合でも機能します。
"The quick brown fox jumps over the lazy dog.".split(/\s+/);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]
問題は、先頭または末尾に空白がある文字列がある場合です。その場合、結果の文字列の配列には、配列の先頭および/または末尾に空の文字が含まれます。
" The quick brown fox jumps over the lazy dog. ".split(/\s+/);
// ["", "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog.", ""]
このような空の文字を削除するのは簡単な作業ですが、可能な限り正規表現内でこれを処理したいです。この目標を達成するために私が使用できる正規表現を誰か知っていますか?
空白ではないビットに関心がある場合は、空白で分割する代わりに非空白に一致させることができます。
" The quick brown fox jumps over the lazy dog. ".match(/\S+/g);
以下はnull
を返すことに注意してください:
" ".match(/\S+/g)
したがって、学習するのに最適なパターンは次のとおりです。
str.match(/\S+/g) || []
" The quick brown fox jumps over the lazy dog. ".trim().split(/\s+/);
空白シーケンスで分割する代わりに、非空白シーケンスと一致させることができます。
" The quick brown fox jumps over the lazy dog. ".match(/\S+/g)
他のコードほどエレガントではないが、非常に理解しやすい:
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;
}