2017-06-10 3 views
0

ich habe eine json o nehmen aus einer CSV und sieht wie folgt aus:ersetzen griechische Zahlenformat (1.000,00)

json_obj : {"id, name, num1, num2" :"1, name111, 2, 1.000,12" } 
{ "id, name, num1, num2" :"2, name222, 34, 5.124,56" } 
{ "id, name, num1, num2" :"3, name333, 5.232,56, 1.123,22" } 

Das Problem ist, dass, wenn ich die json analysieren, ist es, die Zahlen in num1 versteht & num2-Eigenschaften als Zeichenfolgen wegen des griechischen Zahlenformats (1.000,00). Ich versuche, "." mit "" und "," mit "." um sie als Zahlen mit diesem Code zu identifizieren:

var getdata = JSON.parse(response.responseText); //takes the data of the csv 
var stringified = JSON.stringify(getdata); 
stringified = stringified.replace(/\./g, "").replace(/\,/g, "."); 
var resource = JSON.parse(stringified); 

aber es ersetzt auch die "," der JSON, so bekomme ich nichts. Wie kann ich nur die Felder der Eigenschaften num1 ersetzen? & num2?

+0

Ist dies eine einmalige Aufgabe (in welchem ​​Fall String-Manipulation sollte gut genug sein) oder erwarten Sie mit anderen länderspezifischen Währungsformaten umgehen müssen? –

+0

Nein nur diese Art von Format erwarte ich zu ändern. Aber ich muss sofort alle Felder der Eigenschaften ersetzen. – timaris

Antwort

1

So etwas sollte funktionieren:

var parsedNumber = +'1.000,12'.replace('.', '').replace(',', '.') 
+0

Hallo. Vielen Dank für Ihre Antwort. Ich muss alle Felder auf einmal ersetzen ... nicht sagen, welcher Wert ersetzt werden soll, weil ich annehme, dass ich nicht weiß, was der csv mir gibt. – timaris

0

Wie wäre:

var s = `{"id, name, num1, num2" :"1, name111, 2, 1.000,12" } 
 
{ "id, name, num1, num2" :"2, name222, 34, 5.124,56" } 
 
{ "id, name, num1, num2" :"3, name333, 5.232,56, 1.123,22" } 
 
{ "id, name, num1, num2" :"4, name444, 232,56, 123,22" } 
 
{ "id, name, num1, num2" :"4, name444, 12.345.232,56, 123,22" }`; 
 
var res = s.replace(/(?:(\d+)\.)?(?:(\d+)\.)?(\d+),(\d+)/g, "$1$2$3.$4"); 
 
console.log(res);

+0

@timaris: Siehe meine Bearbeitung. – Toto

+0

Einfach großartig !!! Nochmals vielen Dank !!! – timaris

0

Sie str.split([separator[, limit]]) Funktion auf jedem Element verwenden könnte und stellen ', ' als Separator und 4 als Grenze. Aber Sie müssen genau wissen, dass alle Felder getrennt sind von Komma-Raum. Oder andere Option würde alle Werte auf ”'” gesetzt werden, also wäre es nicht einfach nur 1.000,12 sondern '1.000,12'. Und dann könnten Sie es leicht mit regExp