Разбить строку, используя пробел в Javascript? - PullRequest
8 голосов
/ 22 февраля 2012

Мне нужен токенайзер, который при наличии строки с произвольным пробелом среди слов создаст массив слов без пустых подстрок.

Например, для строки:

" I dont know what you mean by glory Alice said."

Я использую:

str2.split(" ")

Это также возвращает пустые подстроки:

["", "I", "dont", "know", "what", "you", "mean", "by", "glory", "", "Alice", "said."]

Как отфильтровать пустые строки из массива?

Ответы [ 6 ]

15 голосов
/ 22 февраля 2012

Возможно, вам даже не нужно фильтровать, просто разделите с помощью этого регулярного выражения:

"   I dont know what you mean by glory Alice said.".split(/\b\s+/)
8 голосов
/ 23 февраля 2012
 str.match(/\S+/g) 

возвращает список непробельных последовательностей ["I", "dont", "know", "what", "you", "mean", "by", "glory", "Alice", "said."] (обратите внимание, что это включает точку в «said»)

 str.match(/\w+/g) 

возвращает список всех слов: ["I", "dont", "know", "what", "you", "mean", "by", "glory", "Alice", "said"]

документов на match ()

7 голосов
/ 22 февраля 2012

Вы должны обрезать строку перед использованием split.

var str = " I dont know what you mean by glory Alice said."
var trimmed = str.replace(/^\s+|\s+$/g, '');
trimmed = str.split(" ")
2 голосов
/ 22 февраля 2012

Я рекомендую .match:

str.match(/\b\w+\b/g);

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

0 голосов
/ 08 марта 2015

я думаю, что пустая подстрока происходит, потому что есть несколько пробелов, которые вы можете использовать replace () в цикле for для замены нескольких пробелов одним пробелом, а затем split () для разделения программы с помощьюодин пробел, как это:

// getting full program from div
var program = document.getElementById("ans").textContent;
//removing multiple spaces
var res = program.replace("  ", " ");
for (i = 0; i <= program.length; i++) {
  var res = res.replace("  ", " ");
}
// spliting each word using space as saperator
var result = res.split(" ");
0 голосов
/ 22 февраля 2012
...