Verwijder komma’s uit de tekenreeks met JavaScript

Ik wil komma’s uit de tekenreeks verwijderen en die hoeveelheid berekenen met JavaScript.

Ik heb bijvoorbeeld die twee waarden:

  • 100.000,00
  • 500.000,00

Nu wil ik komma’s uit die tekenreeks verwijderen en wil ik het totaal van dat aantal.


Antwoord 1, autoriteit 100%

Als u de komma’s wilt verwijderen, moet u replaceop de string. Om te converteren naar een float, zodat je de wiskunde kunt doen, heb je parseFloat:

var total = parseFloat('100,000.00'.replace(/,/g, '')) +
            parseFloat('500,000.00'.replace(/,/g, ''));

Antwoord 2, autoriteit 3%

Gerelateerd antwoord, maar als u een gebruiker wilt opschonen die waarden in een formulier invoert, kunt u het volgende doen:

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

Gebruik de International Datum Local via format. Dit reinigt eventuele slechte ingangen, als er één is, retourneert het een reeks NaNU kunt controleren. Er is geen manier om komma’s te verwijderen als onderdeel van de Locale (vanaf 10/12/19) , zodat u een regex-opdracht kunt gebruiken om komma’s te verwijderen met replace.

ParseFloatConverteert de DIT TYPE DEFINITIE VAN TRUSHING TOT NUMMER

Als u reageert, is dit wat uw berekeningsfunctie eruit zou kunnen zien:

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
}

Antwoord 3

Dit is de eenvoudigste manier om het te doen.

let total = parseInt(('100,000.00'.replace(',',''))) + parseInt(('500,000.00'.replace(',','')))

Other episodes