Remova vírgulas da string usando JavaScript

94

Quero remover vírgulas da string e calcular essa quantidade usando JavaScript.

Por exemplo, tenho esses dois valores:

  • 100.000,00
  • 500.000,00

Agora, quero remover as vírgulas dessa string e quero o total dessa quantidade.

Kanak Vaghela
fonte

Respostas:

169

Para remover as vírgulas, você precisará usar replacena string. Para converter para um float e fazer as contas, você precisará de parseFloat:

var total = parseFloat('100,000.00'.replace(/,/g, '')) +
            parseFloat('500,000.00'.replace(/,/g, ''));
solitário
fonte
3
Sim, precisa combinar replacee parseFloat. aqui está um caso de teste rápido: jsfiddle.net/TtYpH
Shadow Wizard is Ear For You
1
É 2017, não há como ir e voltar de uma string de local? Como você reverte essa função? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… . Postado uma pergunta separada aqui: stackoverflow.com/questions/41905406/…
Costa
3

Resposta relacionada, mas se você deseja executar a limpeza de um usuário inserindo valores em um formulário, eis o que você pode fazer:

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

Use a data internacional local via format. Isso limpa todas as entradas incorretas, se houver, ele retorna uma string de NaNvocê pode verificar. Atualmente, não há como remover vírgulas como parte do local (a partir de 12/10/19) , portanto, você pode usar um comando regex para remover vírgulas usando replace.

ParseFloat converte a definição deste tipo de string para número

Se você usar React, esta é a aparência da função de cálculo:

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
fonte