Javascript wird nur einmal geteilt und ignoriert den Rest

7

Ich analysiere einige Schlüsselwertpaare, die durch Doppelpunkte getrennt sind. Das Problem, das ich habe, ist, dass im Wertbereich Doppelpunkte sind, die ich ignorieren möchte, aber die Funktion split hebt sie trotzdem auf.

Beispiel:

%Vor%

In den einzelnen Zeilen habe ich dieses line.split(/:/, 1) versucht, aber es hat nur den Wertteil der Daten gefunden. Als nächstes probierte ich line.split(/:/, 2) , aber das gab mir ['description', 'this string is not escaped'] und ich brauche die ganze Zeichenfolge.

Danke für die Hilfe!

    
babsher 21.04.2011, 16:12
quelle

5 Antworten

12
%Vor%     
awm 21.04.2011, 16:17
quelle
10

Verwenden Sie den nicht-gierigen Operator ( ? ), um nur die erste Instanz zu teilen.

line.split(/: (.+)?/, 2);

    
JaredMcAteer 21.04.2011 16:18
quelle
2

Wenn Sie eine Alternative zu regexp bevorzugen, beachten Sie dies:

%Vor%

Referenz: teilen , slice , beitreten .

    
Paolo 21.04.2011 16:30
quelle
1

Etwas eleganter:

%Vor%     
Dabble 28.09.2015 00:16
quelle
0

Vielleicht ist dieser Ansatz der beste für einen solchen Zweck:

%Vor%

Sie können also Tabellen in Ihren Konfigurations- / Datendateien mit einer solchen Struktur verwenden und sich auch nicht um Leerzeichen vor oder nach Ihrem Namen-Wert-Trennzeichen ':' kümmern.

Oder Sie können primitive und schnelle String-Funktionen indexOf und substr verwenden, um Ihr Ziel zu erreichen, denke ich, der schnellste Weg (durch CPU und RAM)

%Vor%     
FlameStorm 06.02.2018 11:19
quelle

Tags und Links