2016-04-05 12 views
1

Ich benutze Globalize für jQuery und suche nach einer Lösung, um eine Zahl mit einer Währung in eine Zahl ohne das Währungssymbol zu konvertieren.Bessere Lösung als Globalize.currencyParser?

Globalize hat eine Funktion Globalize.currencyParser, aber in v1.1.1 seine immer noch leer, so habe ich versucht, mit

Globalize(“fr”).numberParser()(“-10 000,99 €”) 

zu konvertieren, aber es wurde 10000,99 und nicht -10000,99.

In Funktion numberParse

if (prefix === negativePrefix && suffix === negativeSuffix) { number *= -1; } 

die Zahl wird auf negativ, weil Suffix nicht konvertieren! == negativeSuffix. So entschied ich, mein Problem mit einem regulären Ausdruck zu lösen

(/^([^0-9]*)(([0-9,\'\٬\.\s]*[0-9]+)(,٫\.[0-9]+)?)([^0-9]*)$/) 

aber ich würde eine Lösung mit Globalize.currencyParser bevorzugen. Gedanken?

Antwort

0

Die ideale Lösung wäre .currencyParser() verwenden, aber es von Globalize noch nicht implementiert wurde: #364 (die leere fn ist definitiv ein Fehler). Wenn Sie den Parser beisteuern möchten, ist er willkommen und ich kann ihn in die Bibliothek einbinden.

In der Zwischenzeit gibt es leider nichts zu tun, außer Hacks zu benutzen. Eine wäre, die Euro-Währung von der Zeichenfolge zu trimmen und dann die resultierende Zahl zu analysieren.

// Ugly hack 
Globalize('fr').parseNumber('-1 000 000,00 €'.replace(/€/, '').trim()) 
// > -1000000 

`` `

0

Ich schrieb eine kleine Funktion meine Js im,

function getNumberAndCurrency(number_with_currency) { 
    var numberNumberRe = (/^([^0-9]*)(([0-9,\'\٬\.\s]*[0-9]+)(,٫\.[0-9]+)?)([^0-9]*)$/); 
    var match_array = numberNumberRe.exec(number_with_currency); 

    if ('' == match_array[5]) { 
    if ('-' == match_array[1].charAt(0)) { 
     var currency = match_array[1].slice(1); 
     var number = '-' + match_array[2]; 
    } else { 
     var currency = match_array[1]; 
     var number = match_array[2]; 
    } 
    } else { 
    var currency = match_array[5]; 
    var number = match_array[1] + match_array[2]; 
    } 

    return [number, currency]; 
} 

diese Arbeit fein in "en", "de" und "fr" locale mit mehreren Währungen Datei

Verwandte Themen