2014-02-17 18 views
5

Ok, also schreibe ich ein Skript, das ganze Sätze enthält, aber ganze Sätze können Kommas enthalten.Array zu Zeichenkette, die Kommas enthält - JavaScript

Aufgrund der Funktionsweise des Skripts muss das Array mindestens einmal in eine Zeichenfolge umgewandelt werden. Also, wenn das passiert, kollabieren die Komma miteinander, sobald ich die Zeichenfolge wieder in die ursprünglichen Werte aufgeteilt habe.

Ich kann nicht ganz herausfinden, wie man das beheben kann und ich habe bis jetzt alles ohne Erfolg gesucht.

ich mit Chrom-Plugins gerade arbeite, das ist ein kleines Beispiel, was passiert:

var Data = ["This is a normal string", "This string, will cause a conflict.", "This string should be normal"]; 

// The data gets sent to a background script, in string form and comes back as this 
var Data = "This is a normal string, This string, will cause a conflict., This string should be normal"; 
Data = Data.split(","); 

// Results in 4 positions instead of 3 
Data = ["This is a normal string", "This string"," will cause a conflict.", "This string should be normal"]; 
+5

Bieten Sie Ihren Code – Pavlo

+1

Sie müssen einige Beispiele und Ihren aktuellen Code angeben. Aus dem, was Sie bisher geschrieben haben, können wir nichts ableiten. – Andy

+0

Also nicht Kommas als Join-Trennzeichen verwenden? .join (">>><<<") –

Antwort

4

Wenn Sie .join() auf dem Array aufrufen, um es in eine Zeichenfolge zu konvertieren uCan yo das Trennzeichen angeben.

Zum Beispiel:

["Hello,","World"].join("%%%"); // "Hello,%%%World" 

Sie können dann teilen Sie es basierend auf "%%%" (.split("%%%")), um es wieder auseinander zu brechen.

Das heißt, wenn Sie eine Aktion auf jedes Element eines Arrays (jede Zeile) anwenden möchten, müssen Sie wahrscheinlich nicht erneut .join und dann .split aufrufen. Stattdessen können Sie Array-Methoden verwenden, zum Beispiel:

var asLower = ["Hello","World"].map(function(line){ return line.toLowerCase(); }); 
// as Lower now contains the items in lower case 

Alternativ, wenn Ihr Ziel Serialisierung Verarbeitung statt - Sie sollten nicht Serialisierung „Ihre eigene Rolle“ und die in JSON.parse gebaut verwenden und JSON.stringify Methoden wie h2oooooo vorgeschlagen .

+1

Was passiert, wenn einer der Sätze den Ausdruck '%%%' enthält? – Bergi

+0

@Bergi +1 Natürlich müssen Sie ein Trennzeichen wählen, das Sie sicher nicht in den Strings finden. Das ist eine gute Sache, danke. Ich habe auch klargestellt, dass dies normalerweise nicht der bevorzugte Ansatz ist, um zu lösen, was ich glaube, dass das "Y" -Problem OP hat (aber ich kann es nicht sagen). –

3

können Sie JSON.stringify(array) und JSON.parse(json) verwenden, um sicherzustellen, dass alles, was Array/Objekt, das Sie genau die gleiche kommen wieder eingeben (und es funktioniert auch mit booleans, ganzen Zahlen, Schwimmern, etc.):

var data = ["This is a normal string", "This string, will cause a conflict.", "This string should be normal"]; 

// The data gets sent to a background script, in string form and comes back as this 
data = JSON.stringify(data); 
console.log(data); 
// ["This is a normal string","This string, will cause a conflict.","This string should be normal"] 

data = JSON.parse(data); 
console.log(data); 
// ["This is a normal string", "This string, will cause a conflict.", "This string should be normal"] 
Verwandte Themen