[Javascript] एक jQuery स्ट्रिंग को jQuery या जावास्क्रिप्ट के साथ दोहरी में कैसे परिवर्तित करें?


Answers

accounting.js जाने का रास्ता है। मैंने इसे एक प्रोजेक्ट में इस्तेमाल किया और इसका उपयोग करके बहुत अच्छा अनुभव था।

accounting.formatMoney(4999.99, "€", 2, ".", ","); // €4.999,99
accounting.unformat("€ 1.000.000,00", ","); // 1000000

आप इसे GitHub पा सकते हैं

Question

मेरे पास एक टेक्स्ट बॉक्स है जिसमें उसमें एक मुद्रा स्ट्रिंग होगी जिसमें मुझे उस स्ट्रिंग को दो ऑपरेशन करने के लिए इसे दोबारा बदलने की आवश्यकता है।

"$ 1,100.00" -> 1100.00

यह सभी ग्राहक पक्ष होने की जरूरत है। मेरे पास इनपुट स्ट्रिंग के रूप में मुद्रा स्ट्रिंग को इनपुट स्ट्रिंग के रूप में छोड़ने के अलावा कोई विकल्प नहीं है, लेकिन कुछ गणितीय परिचालनों को अनुमति देने के लिए उसे दो बार परिवर्तित / परिवर्तित करने की आवश्यकता है।




यह मेरा काम है। सभी मुद्राओं के साथ काम करता है ..

function toFloat(num) {
    dotPos = num.indexOf('.');
    commaPos = num.indexOf(',');

    if (dotPos < 0)
        dotPos = 0;

    if (commaPos < 0)
        commaPos = 0;

    if ((dotPos > commaPos) && dotPos)
        sep = dotPos;
    else {
        if ((commaPos > dotPos) && commaPos)
            sep = commaPos;
        else
            sep = false;
    }

    if (sep == false)
        return parseFloat(num.replace(/[^\d]/g, ""));

    return parseFloat(
        num.substr(0, sep).replace(/[^\d]/g, "") + '.' + 
        num.substr(sep+1, num.length).replace(/[^0-9]/, "")
    );

}

उपयोग: toFloat("$1,100.00") या toFloat("1,100.00$")




मुझे पता है कि यह एक पुराना सवाल है, लेकिन सीएमएस के जवाब में एक छोटी सी छोटी गड़बड़ी होती है: यह केवल तभी काम करता है जब मुद्रा प्रारूप "।" दशमलव विभाजक के रूप में। उदाहरण के लिए, यदि आपको रूसी रूबल के साथ काम करने की ज़रूरत है, तो स्ट्रिंग इस तरह दिखेगी: "1 000,00 रगड़।"

मेरा समाधान सीएमएस की तुलना में बहुत कम सुरुचिपूर्ण है, लेकिन यह चाल करना चाहिए।

var currency = "1 000,00 rub."; //it works for US-style currency strings as well
var cur_re = /\D*(\d.*?\d)(?:\D+(\d{2}))?\D*$/;
var parts = cur_re.exec(currency);
var number = parseFloat(parts[1].replace(/\D/,'')+'.'+(parts[2]?parts[2]:'00'));

मान्यताओं:

  • मुद्रा मूल्य दशमलव नोटेशन का उपयोग करता है
  • स्ट्रिंग में कोई अंक नहीं हैं जो मुद्रा मान का हिस्सा नहीं हैं
  • मुद्रा मूल्य में इसके आंशिक भाग में 0 या 2 अंक होते हैं *

Regexp कुछ भी "1,999 डॉलर और 99 सेंट" की तरह संभाल सकता है, हालांकि यह एक इच्छित विशेषता नहीं है और इसे पर भरोसा नहीं किया जाना चाहिए।

उम्मीद है कि यह किसी की मदद करेगा।




आप इसे आजमा सकते हैं

<script type="text/javascript">

var str="$1,112.12";
str = str.replace(",","");
str = str.replace("$","");
document.write(parseFloat(str));

</script>



मुझे पता है कि यह एक पुराना सवाल है लेकिन एक अतिरिक्त विकल्प देना चाहता था।

JQuery ग्लोबलनाइजेशन एक फ्लोट पर एक संस्कृति विशिष्ट प्रारूप को पार्स करने की क्षमता देता है।

https://github.com/jquery/globalize

"$ 13,042.00" स्ट्रिंग को देखते हुए, और ग्लोबलइज़ एन-यूएस पर सेट किया गया:

Globalize.culture("en-US");

आप फ्लोट वैल्यू को इस तरह से पार्स कर सकते हैं:

var result = Globalize.parseFloat(Globalize.format("$13,042.00", "c"));

यह आपको देगा:

13042.00

और आपको अन्य संस्कृतियों के साथ काम करने की अनुमति देता है।




// "10.000.500,61 टीएल" price_to_number => 10000500.61

// "10000500.62" number_to_price => 10.000.500,62

जेएस फिडल: https://jsfiddle.net/Limitlessisa/oxhgd32c/

var price="10.000.500,61 TL";
document.getElementById("demo1").innerHTML = price_to_number(price);

var numberPrice="10000500.62";
document.getElementById("demo2").innerHTML = number_to_price(numberPrice);

function price_to_number(v){
    if(!v){return 0;}
    v=v.split('.').join('');
    v=v.split(',').join('.');
    return Number(v.replace(/[^0-9.]/g, ""));
}

function number_to_price(v){
    if(v==0){return '0,00';}
    v=parseFloat(v);
    v=v.toFixed(2).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
    v=v.split('.').join('*').split(',').join('.').split('*').join(',');
    return v;
}





Links