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 replace
op 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 NaN
U 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
.
ParseFloat
Converteert 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(',','')))