जावास्क्रिप्ट का उपयोग करके स्ट्रिंग से कॉमा निकालें


97

मैं स्ट्रिंग से कॉमा को निकालना चाहता हूं और जावास्क्रिप्ट का उपयोग करके उन राशि की गणना करता हूं।

उदाहरण के लिए, मेरे पास दो मूल्य हैं:

  • 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
शैडो विजार्ड इयर फॉर यू

1
यह 2017 है, क्या लोकेल स्ट्रिंग से जाने और आने का कोई रास्ता नहीं है ? आप इस फ़ंक्शन को कैसे उल्टा करते हैं? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… । यहाँ एक अलग सवाल पोस्ट किया: stackoverflow.com/questions/41905406/…
कोस्टा

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 इस प्रकार की परिभाषा को स्ट्रिंग से संख्या में परिवर्तित करता है

यदि आप प्रतिक्रिया का उपयोग करते हैं, तो यह है कि आपका गणना कार्य कैसा दिख सकता है:

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
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.