Voglio rimuovere le virgole dalla stringa e calcolare l'importo utilizzando JavaScript.
Ad esempio, ho questi due valori:
- 100.000,00
- 500.000,00
Ora voglio rimuovere le virgole da quelle stringhe e voglio il totale di quelle quantità.
Voglio rimuovere le virgole dalla stringa e calcolare l'importo utilizzando JavaScript.
Ad esempio, ho questi due valori:
Ora voglio rimuovere le virgole da quelle stringhe e voglio il totale di quelle quantità.
Risposte:
Per rimuovere le virgole, dovrai usarle replacesulla stringa. Per convertire in un float in modo da poter fare i conti, avrai bisogno di parseFloat:
var total = parseFloat('100,000.00'.replace(/,/g, '')) +
parseFloat('500,000.00'.replace(/,/g, ''));
Risposta correlata, ma se desideri eseguire la pulizia di un utente inserendo valori in un modulo, ecco cosa puoi fare:
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
Usa la data internazionale locale tramite format. Questo ripulisce qualsiasi input non valido, se ce n'è uno restituisce una stringa di NaNcui puoi controllare. Al momento non è possibile rimuovere le virgole come parte della locale (a partire dal 10/12/19) , quindi puoi usare un comando regex per rimuovere le virgole usando replace.
ParseFloat converte la definizione di questo tipo da stringa a numero
Se usi React, ecco come potrebbe apparire la tua funzione di calcolo:
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
}
replaceeparseFloat. ecco un breve test case: jsfiddle.net/TtYpH