2016-11-08 4 views
0

Ich muss eine Zahl in JavaScript mit Trennzeichen formatieren, die zur Laufzeit definiert werden können.Number.toLocaleString() mit benutzerdefinierten Trennzeichen

Die Kombination aus Tausender- und Dezimaltrennzeichen stimmt möglicherweise nicht mit einem bestimmten Gebietsschema überein.

Gibt es eine Möglichkeit, das Tausendertrennzeichen in JavaScript toLocaleString() bereitzustellen? oder um NumberFormat explizit mit Werten zu verwenden, die ich definiere?

Ich sehe Beispiele mit Gebietsschema-Codes, und einige mit anderen Werten (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString), aber diese decken nicht meinen Anwendungsfall.

+1

http://stackoverflow.com/questions/37994133/change-decimal-mark/37994346#37994346 – Teemu

+0

Wie ich in der Frage erwähnt, weiß ich nicht die erwartete Dezimalzahl und Tausendertrennzeichen bis zur Laufzeit eines so einstellen Gebietsschema ist für dieses Beispiel nicht möglich. – dougajmcdonald

+0

Es gibt praktisch drei verschiedene Trennzeichen: ',', '.' und Leerzeichen. Es ist möglich, zur Laufzeit die richtige Kombination zu finden und ein geeignetes Sprach-Tag auszuwählen. Oder sind die Trennzeichen vollständig benutzerdefiniert, wie 'a',' x' usw.? – Teemu

Antwort

2

Eine Option besteht darin, eine Zeichenfolge mit bekannten Trennzeichen zu formatieren und dann eine Suche/Ersetzung mit den unbekannten Trennzeichen durchzuführen.

function formatNum(num, separator, fraction) { 
    var str = num.toLocaleString('en-US'); 
    str = str.replace(/\./, fraction); 
    str = str.replace(/,/g, separator); 
    return str; 
} 

formatNum(12342.2, "a", "x"); 
//12a342x2 
+0

Das ist sowohl eine vernünftige als auch eine schreckliche Lösung! Ich hasse es und liebe es! – dougajmcdonald

+0

:) Warum schrecklich? –

+0

Dies ist in der Tat eine sehr clevere und elegante Lösung Larry! Solange das En-US-Format sich nicht ändert, sollte es in Ordnung sein! – Victor

Verwandte Themen