JavaScript kullanarak dizeden virgül kaldırın


97

Dizeden virgül çıkarmak ve bu miktarı JavaScript kullanarak hesaplamak istiyorum.

Örneğin, şu iki değere sahibim:

  • 100.000,00
  • 500.000,00

Şimdi bu dizeden virgül çıkarmak istiyorum ve bu miktarın toplamını istiyorum.

Yanıtlar:


172

Virgülleri kaldırmak replaceiçin dizede kullanmanız gerekir . Matematiği yapabilmeniz için bir kayan noktaya dönüştürmek için ihtiyacınız olacak parseFloat:

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

3
Evet, birleştirmeniz gerekiyor replaceve parseFloat. işte hızlı bir test vakası: jsfiddle.net/TtYpH
Gölge Sihirbazı Sizin İçin

1
Bu 2017 var, ve gitmek için yolu yoktur gelen bir yerel dize? Bu işlevi nasıl tersine çevirirsiniz? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… . Burada ayrı bir soru
Costa

4

İlgili cevap, ancak bir forma değer girerek bir kullanıcıyı temizlemek istiyorsanız, şunları yapabilirsiniz:

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

Yerel yoluyla uluslararası tarihi kullanın format. Bu, herhangi bir hatalı girişi temizler, eğer varsa, NaNkontrol edebileceğiniz bir dizi döndürür . Şu anda yerel ayarın bir parçası olarak virgül kaldırmanın bir yolu yoktur (12/10/19 itibarıyla) , bu nedenle kullanarak virgülleri kaldırmak için bir normal ifade komutu kullanabilirsiniz replace.

ParseFloat bu tür tanımını dizeden sayıya dönüştürür

React kullanırsanız, hesaplama fonksiyonunuz şöyle görünebilir:

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
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.