Как разбить строку на пробелы и игнорировать начальные и конечные пробелы в массиве слов с помощью регулярного выражения?


Я обычно использую следующий код в 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.", ""]

это тривиальная задача, чтобы устранить такие пустые символы, но я бы предпочел позаботиться об этом в регулярном выражении, если это вообще возможно. Кто-нибудь знает, что регулярное выражение, я мог бы использовать для достижения этой цели?

3 60

3 ответа:

если вас больше интересуют биты, которые не являются пробелами, вы можете сопоставить не-пробелы вместо разделения на пробелы.

"  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)