Hapus koma dari string menggunakan JavaScript

97

Saya ingin menghapus koma dari string dan menghitung jumlah tersebut menggunakan JavaScript.

Misalnya, saya memiliki dua nilai itu:

  • 100.000,00
  • 500.000,00

Sekarang saya ingin menghapus koma dari string itu dan ingin total jumlahnya.

Kanak Vaghela
sumber

Jawaban:

172

Untuk menghapus koma, Anda harus menggunakan replacepada string. Untuk mengonversi menjadi float agar Anda dapat melakukan perhitungan matematika, Anda memerlukan parseFloat:

var total = parseFloat('100,000.00'.replace(/,/g, '')) +
            parseFloat('500,000.00'.replace(/,/g, ''));
lonesomeday
sumber
3
Ya, perlu menggabungkan replacedan parseFloat. berikut adalah kasus uji cepat: jsfiddle.net/TtYpH
Shadow Wizard is Ear For You
1
Ini tahun 2017, apakah tidak ada cara untuk pergi ke dan dari string lokal? Bagaimana Anda membalikkan fungsi ini? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… . Memposting pertanyaan terpisah di sini: stackoverflow.com/questions/41905406/…
Costa
4

Jawaban terkait, tetapi jika Anda ingin menjalankan pembersihan pengguna yang memasukkan nilai ke dalam formulir, inilah yang dapat Anda lakukan:

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

Gunakan tanggal internasional lokal melalui format. Ini membersihkan semua masukan yang buruk, jika ada yang mengembalikan string NaNyang dapat Anda periksa. Saat ini tidak ada cara untuk menghapus koma sebagai bagian dari lokal (mulai 10/12/19) , jadi Anda dapat menggunakan perintah regex untuk menghapus koma menggunakan replace.

ParseFloat mengubah definisi jenis ini dari string menjadi angka

Jika Anda menggunakan React, seperti inilah fungsi perhitungan Anda:

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
sumber