Удалите запятые из строки с помощью JavaScript

97

Я хочу удалить запятые из строки и вычислить их количество с помощью JavaScript.

Например, у меня есть эти два значения:

  • 100 000,00
  • 500 000,00

Теперь я хочу удалить запятые из этой строки и получить общую сумму.

Канак Вагела
источник

Ответы:

172

Чтобы удалить запятые, вам нужно использовать replaceв строке. Чтобы преобразовать в число с плавающей запятой, чтобы вы могли выполнять математические вычисления, вам понадобятся parseFloat:

var total = parseFloat('100,000.00'.replace(/,/g, '')) +
            parseFloat('500,000.00'.replace(/,/g, ''));
одинокий день
источник
3
Да, нужно совместить replaceи parseFloat. вот быстрый тестовый пример: jsfiddle.net/TtYpH
Shadow Wizard is Ear For You
1
Это 2017, не существует никакого способа , чтобы пойти и от локали строки? Как изменить эту функцию? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… .
Costa
4

Связанный ответ, но если вы хотите запустить очистку пользователя, вводящего значения в форму, вот что вы можете сделать:

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

Используйте международную дату через местный переход format. Это очищает все плохие входы, если они есть, возвращает строку, которую NaNвы можете проверить. В настоящее время нет возможности удалить запятые как часть локали (по состоянию на 10.12.19) , поэтому вы можете использовать команду регулярного выражения для удаления запятых с помощью replace.

ParseFloat преобразует определение этого типа из строки в число

Если вы используете React, ваша функция вычисления может выглядеть так:

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
}
Винсент Танг
источник