如何使用空格将string拆分,并使用正则expression式将前导空格和尾部空格忽略为单词数组?
我通常在JavaScript中使用下面的代码来分割一个string的空白。
"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."]
问题是当我有一个string有前导或尾随空白,在这种情况下,结果数组的string将包括一个空的字符在数组的开始和/或结束。
" The quick brown fox jumps over the lazy dog. ".split(/\s+/); // ["", "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog.", ""]
消除这样的空白字符是一件微不足道的任务,但是如果可能的话,我宁愿在正则expression式中考虑这一点。 有人知道我可以用什么正则expression式来实现这个目标吗?
如果你对非空格的位更感兴趣,你可以匹配非空白而不是空格分隔。
" 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)