Подтвердить что ты не робот

Разделение строки по пробелам, без пустых элементов?

Я пытаюсь взорвать строку, используя javascript, чтобы выбрать поисковые запросы, разделенные пробелами. Однако я получаю пустые элементы массива, если searchterm заканчивается пробелом, как показано ниже.

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

var str = "searchterm1 searchterm2";
console.log(str.split(" ")); // ["searchterm1", "searchterm2"]

var strb = "searchterm1 "; // Note the ending whitespace
console.log(strb.split(" ")); // ["searchterm1", ""]
4b9b3361

Ответ 1

Вы можете просто сопоставить все последовательности без пробелов:

str.match(/[^ ]+/g)

Ответ 2

Независимо от того, какой разделитель всегда работает:

str.split(' ').filter(function(i){return i})
// With ES6
str.split(' ').filter(i => i)

Логика фильтра также может измениться в некоторых других случаях.

Ответ 3

Добавить функцию:

//Some browsers support trim so we check for that first
if(!String.prototype.trim) {  
  String.prototype.trim = function () {  
    return this.replace(/^\s+|\s+$/g,'');  
  };  
}

Затем вызовите обрезку строки:

var strb = "searchterm1 "; // Note the ending whitespace
console.log(strb.trim().split(" ")); // ["searchterm1"]

Ответ 4

Если вам нужна функция, которую вы можете использовать, просто расширьте строку:

 String.prototype.splitNoSpaces = function(){
     return this.split(' ').filter(function(i){return i});
 };

 //Now use it!
 var classString = "class1    class2 class3    class4";
 var classArray = classString.splitNoSpaces();

 //classArray[0] is class1
 //classArray[1] is class2
 //classArray[2] is class3
 //classArray[3] is class4

Спасибо @user1079877 за подсказку