2016-10-27 3 views
1

Ich habe dies in Knoten:Split String durch mehrere Spaces 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' ] 

Ich würde die gespaltet Saite erwarten, z.B. ['java', '1303', 'root' ...]

+1

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

+1

'out.split (/ \ s + /)'. '" \\ s + "' ist eine Zeichenkette und der Compiler sucht nach dem genauen Wert und nicht nach dem Muster. Regex für Muster verwenden – Rajesh

Antwort

5

Vielen Dank für Kommentare. Es scheint, dass Zitate nicht benötigt werden:

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

Split akzeptiert eine Regex - anders als in Java wird eine Regex nicht wie eine Zeichenfolge initialisiert – baao

1

Sie mit einer Zeichenkette geteilt \s+, wäre es "a\\s+b" in a und b gespalten.

einen regulären Ausdruck verwenden, RegExp("\\s+") oder /\s+/ (besser, da das Muster statisch):

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

ich auch vorschlagen, den Eingang Trimmen zu Beginn leerer Elemente loszuwerden/Ende.

Beachten Sie auch, dass .split(/\s+/g) = .split(/\s+/) (der globale Modifikator ist impliziert mit String#split()).