2009-08-20 6 views

Antwort

6

Unter der Annahme, dass CR, LF und = sind alle geschützten Zeichen (dh sie können nicht in key oder value auftreten), könnten Sie einfach tun:

var str = "key=value\r\nkey2=value2\r\n"; 
var lines = str.split("\r\n"); 
var map = {}; 
for(var i = 0; i < lines.length; i++) { 
    var pieces = lines[i].split("="); 
    if (pieces.length == 2) 
    map[pieces[0]] = pieces[1]; 
} 
+1

Dies wird einen falschen Schlüssel '' hinzufügen -> nicht definiert, aufgrund des nachlaufs CRLF. Überprüfen Sie am besten, dass die Zeilen [i] vor dem Teilen und Hinzufügen nicht leer sind (oder vielleicht, dass sie '=' enthalten). – bobince

0

http://krook.org/jsdom/ siehe String.split Methode hashmap oder ähnliche Liste zu machen. Split zuerst auf crlf (\ r \ n glaube ich) und spaltete dann auf "="

1

Dies sollte es tun:

var str = "key=value\r\nkey2=value2\r\n"; 

var re = /([^=]*)=(.*?)\r\n/g, match, map = { }; 

while (match = re.exec(str)) { 
    map[match[1]] = match[2]; 
}