2016-10-27 2 views
1

У меня есть это в узле:Split Строка многократных Пробелов NodeJS

>out 
'java 1303 root 187u CHR 166,0  0t0 14586 /dev/ttyACM0\n' 
>typeof out 
'string' 
> out.split("\\s+"); 
[ 'java 1303 root 187u CHR 166,0  0t0 14586 /dev/ttyACM0\n' ] 

Я ожидал бы расщепленную строку, например, ['java', '1303', 'root' ...]

+1

'.split (/ \ s + /)'? – Andrey

+1

'out.split (/ \ s + /)'. '' \\ s + "' является строкой, и компилятор будет искать точное значение, а не шаблон. Использовать регулярное выражение для шаблона – Rajesh

ответ

5

Благодарим вас за комментарии. кажется, что кавычки не нужны вообще:

> out.split(/\s+/); 
+0

Сплит принимает регулярное выражение - кроме java, регулярное выражение не инициализируется как строка – baao

1

Вы разделить с символьной строки \s+, она расколется "a\\s+b" в a и b.

Используйте регулярное выражение, RegExp("\\s+") или /\s+/ (лучше, так как модель является статической):

var s = 'java 1303 root 187u CHR 166,0  0t0 14586 /dev/ttyACM0\n'; 
 
console.log(s.trim().split(/\s+/));

Я также предлагает обрезку входа, чтобы избавиться от пустых элементов в начале/конец.

Также обратите внимание, что .split(/\s+/g) = .split(/\s+/) (глобальный модификатор подразумевается с помощью String#split()).