1. ホーム
  2. javascript

正規表現を使って、文字列を空白で分割し、先頭と末尾の空白を無視して単語の配列にするにはどうすればよいですか?

2023-08-12 12:40:44

質問内容

私は通常、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) || []