Entfernen Sie Kommas mit JavaScript aus der Zeichenfolge

91

Ich möchte Kommas aus der Zeichenfolge entfernen und diesen Betrag mit JavaScript berechnen.

Zum Beispiel habe ich diese zwei Werte:

  • 100.000,00
  • 500.000,00

Jetzt möchte ich Kommas aus dieser Zeichenfolge entfernen und die Summe dieser Beträge.

Kanak Vaghela
quelle

Antworten:

166

Um die Kommas zu entfernen, müssen Sie replacedie Zeichenfolge verwenden. Um in einen Float zu konvertieren, damit Sie rechnen können, benötigen Sie parseFloat:

var total = parseFloat('100,000.00'.replace(/,/g, '')) +
            parseFloat('500,000.00'.replace(/,/g, ''));
einsamer Tag
quelle
3
Ja, müssen kombinieren replaceund parseFloat. Hier ist ein kurzer Testfall: jsfiddle.net/TtYpH
Shadow Wizard ist Ear For You
1
Es ist 2017, gibt es keine Möglichkeit, zu und von einer Gebietsschema-Zeichenfolge zu gelangen? Wie kehren Sie diese Funktion um? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… . Gepostet
Costa
2

Verwandte Antwort, aber wenn Sie einen Benutzer bereinigen möchten, der Werte in ein Formular eingibt, können Sie Folgendes tun:

const numFormatter = new Intl.NumberFormat('en-US', {
  style: "decimal",
  maximumFractionDigits: 2
})

// Good Inputs
parseFloat(numFormatter.format('1234').replace(/,/g,"")) // 1234
parseFloat(numFormatter.format('123').replace(/,/g,"")) // 123

// 3rd decimal place rounds to nearest
parseFloat(numFormatter.format('1234.233').replace(/,/g,"")); // 1234.23
parseFloat(numFormatter.format('1234.239').replace(/,/g,"")); // 1234.24

// Bad Inputs
parseFloat(numFormatter.format('1234.233a').replace(/,/g,"")); // NaN
parseFloat(numFormatter.format('$1234.23').replace(/,/g,"")); // NaN

// Edge Cases
parseFloat(numFormatter.format(true).replace(/,/g,"")) // 1
parseFloat(numFormatter.format(false).replace(/,/g,"")) // 0
parseFloat(numFormatter.format(NaN).replace(/,/g,"")) // NaN

Verwenden Sie das internationale Datum lokal über format. Dadurch werden fehlerhafte Eingaben bereinigt. Wenn eine vorhanden ist, wird eine Zeichenfolge zurückgegeben, nach der NaNSie suchen können. Es gibt derzeit keine Möglichkeit, Kommas als Teil des Gebietsschemas zu entfernen (Stand: 12.10.19) . Sie können also einen Regex-Befehl verwenden, um Kommas mit zu entfernen replace.

ParseFloat konvertiert die Definition dieses Typs von Zeichenfolge in Zahl

Wenn Sie React verwenden, könnte Ihre Berechnungsfunktion folgendermaßen aussehen:

updateCalculationInput = (e) => {
    let value;
    value = numFormatter.format(e.target.value); // 123,456.78 - 3rd decimal rounds to nearest number as expected
    if(value === 'NaN') return; // locale returns string of NaN if fail
    value = value.replace(/,/g, ""); // remove commas
    value = parseFloat(value); // now parse to float should always be clean input

    // Do the actual math and setState calls here
}
Vincent Tang
quelle