Как я разделяю строку по пробелам и игнорирую ведущее и конечное пустое пространство в массив слов, используя регулярное выражение?
Обычно я использую следующий код в 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.", ""]
Это тривиальная задача для устранения таких пустых символов, но я бы лучше позаботился об этом в рамках регулярного выражения, если это вообще возможно. Кто-нибудь знает, какое регулярное выражение я мог бы использовать для достижения этой цели?
Ответы
Ответ 1
Если вас больше интересуют биты, которые не являются пробелами, вы можете сопоставить не-whitespace вместо разделения по пробелам.
" The quick brown fox jumps over the lazy dog. ".match(/\S+/g);
Обратите внимание, что следующее возвращается null
:
" ".match(/\S+/g)
Итак, лучший образец для изучения:
str.match(/\S+/g) || []
Ответ 2
" The quick brown fox jumps over the lazy dog. ".trim().split(/\s+/);
Ответ 3
Вместо разделения по пробельным последовательностям вы можете сопоставить любые последовательности без пробелов:
" The quick brown fox jumps over the lazy dog. ".match(/\S+/g)