jQuery में एक संख्या में अल्पविराम जोड़ें


83

मेरे पास ये नंबर हैं

10999और 8094और456

और मैं बस इतना करना चाहता हूं कि अगर सही जगह पर कोई कॉमा जोड़ दे तो उसे ऐसा ही लगे

10,999और 8,094और456

ये सभी एप टैग के भीतर हैं <p class="points">10999</p>

क्या यह किया जा सकता है?

मैंने अन्य पदों की मदद से यहाँ प्रयास किया है http://jsfiddle.net/pdWTU/1/ लेकिन काम करने के लिए नहीं मिल सकता है

धन्यवाद

जेमी

अपडेट करें

एक बिट के आसपास गड़बड़ कर दिया गया और यह पता लगाने में कामयाब रहे यहाँ http://jsfiddle.net/W5jwY/1/

इसे करने के बेहतर तरीके के लिए नए वैश्वीकरण प्लगइन को देखने जा रहे हैं

धन्यवाद

जेमी


4
यहां संबंधित प्रश्न: stackoverflow.com/questions/2901102/…
epascarello

3
अपनी बेला के लिए +1। आपको अपने समाधान को अपने अपडेट में शामिल करना चाहिए:<number string>.replace(/\B(?=(?:\d{3})+(?!\d))/g, ',')
zhon

2
मैं चाहता हूं कि मैं आपके समाधान के लिए +100 कर सकता हूं: रेगेक्स कह रहा है कि शब्द सीमा नहीं एक सकारात्मक नज़र से आगे 3 अंकों के बाद संभवतः एक अंक के बाद दोहराया नहीं जाता है। बहुत बढ़िया!
23

यह समाधान अधिकांश भाग के लिए सबसे अच्छा था, लेकिन मेरे लिए बहुत काम नहीं था। दुर्भाग्य से मुझे 4 और कभी-कभी 5 दशमलव स्थानों के साथ संख्याएँ प्रदर्शित करने की आवश्यकता होती है। जिन लोगों के लिए मैं उच्च-लेन-देन की गणना और एक पैसे के अंशों के साथ काम करने के लिए काम करता हूं, वे $ 100s या $ उच्च डॉलर (ऑफिस स्पेस सोचते हैं) तक जोड़ते हैं। मैंने आपके फिडल पर कुछ कोड को थप्पड़ मार दिया था ताकि वह दशमलव 3 स्थानों को संभालने की अनुमति दे सके: http://jsfiddle.net/W5jwY/554/
जोश बिलडरबैक

इस सवाल का असली जवाब यहां: stackoverflow.com/a/2632502/1860982
टॉसीन ओनिक्यूट

जवाबों:


138

सभी ब्राउज़रों पर काम करता है, यह आप सभी की जरूरत है।

  function commaSeparateNumber(val){
    while (/(\d+)(\d{3})/.test(val.toString())){
      val = val.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2');
    }
    return val;
  }

लिखा यह कॉम्पैक्ट करने के लिए, और बिंदु के लिए, regex के लिए धन्यवाद। यह सीधे JS है, लेकिन आप इसे अपने jQuery में उपयोग कर सकते हैं जैसे:

$('#elementID').html(commaSeparateNumber(1234567890));

या

$('#inputID').val(commaSeparateNumber(1234567890));

4
user1655655 का जवाब बेहतर है
PyrolICAL

7
इस उत्तर के साथ दो मुद्दे: 1. एक ही मूल्य के साथ फ़ंक्शन को एक से अधिक बार कॉल करने से गलत स्थानों (उदाहरण के लिए, कीप ईवेंट) में कॉमा हो जाएगा। 2. यह फ़ंक्शन दशमलव को ठीक से नहीं संभालता है और दशमलव के अंदर कॉमा को जोड़ देगा। इस JSField को संशोधित संस्करण के लिए देखें जो दोनों को ठीक करता है।
बाके

1
@baacke इस फ़ंक्शन का विचार पतला होना है, इसलिए मैंने इसे एक ही संस्करण या दशमलव पर दो बार कॉल करने के लिए खाता नहीं था (क्योंकि यह प्रश्न में नहीं था)। किसी भी तरह से, आपका फिडेल उदाहरण उन मामलों के लिए उपयोगी है जहां आपको एक दशमलव की आवश्यकता होगी ताकि आपको धन्यवाद।
तीमुथियुस पेरेज़

जहां अल्पविराम या अवधि दिखाई देती है, वह स्थान द्वारा निर्धारित होता है। जेएस मानक पुस्तकालय आपके लिए पहले से ही ऐसा कर सकता है। developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
एलेक्स हार्वे

130
Number(10000).toLocaleString('en');  // "10,000"

6
यह सबसे सरल उपाय है और यह मेरे लिए एकदम सही है। धन्यवाद!
अहगूद

3
उस संकेत के लिए धन्यवाद, कस्टम फ़ंक्शन लिखने या एक प्लगइन सहित बहुत बेहतर है। मेरे लिए उत्तर # 1!
linqu

5
यह बहुत अच्छा है, और अधिकांश डेस्कटॉप ब्राउज़रों में काम करता है, लेकिन अभी मोबाइल ब्राउज़र में इसका समर्थन सीमित है ... डेवलपर.
ल्यूक

2
जब तक आप Node.js के साथ इसका उपयोग करना चाहते हैं, तब तक यह काम नहीं करेगा, जब तक आप v18 इंजन को i18n शामिल करने के लिए पुन: संकलित नहीं करते हैं: stackoverflow.com/questions/23571043/…
टॉम स्पेंसर

3
यह ब्राउज़रों के बीच असंगत है और iPad पर बिल्कुल भी काम नहीं करता है।
आइजैक आस्क्यू

3

टिमोथी पिरेज का उत्तर बहुत सही था, लेकिन अगर आपको संख्याओं को कॉम्प्लेक्स के साथ बदलने की आवश्यकता है, तो टेक्स्टफील्ड में उपयोगकर्ता प्रकार के रूप में, आप कीप फ़ंक्शन का उपयोग करना चाहते हैं।

      $('#textfield').live('keyup', function (event) {
        var value=$('#textfield').val();

      if(event.which >= 37 && event.which <= 40){
          event.preventDefault();
      }
      var newvalue=value.replace(/,/g, '');   
      var valuewithcomma=Number(newvalue).toLocaleString('en');   
      $('#textfield').val(valuewithcomma); 

      });

    <form><input type="text" id="textfield" ></form>


1

Numeral.js पर एक नज़र डालें । यह संख्या, मुद्रा, प्रतिशत को प्रारूपित कर सकता है और स्थानीयकरण के लिए समर्थन करता है।


1
    function delimitNumbers(str) {
      return (str + "").replace(/\b(\d+)((\.\d+)*)\b/g, function(a, b, c) {
        return (b.charAt(0) > 0 && !(c || ".").lastIndexOf(".") ? b.replace(/(\d)(?=(\d{3})+$)/g, "$1,") : b) + c;
      });
    }

    alert(delimitNumbers(1234567890));


0

Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString पर toLocaleString रेफरी का उपयोग करना

function formatComma(value, sep = 0) {
      return Number(value).toLocaleString("ja-JP", { style: "currency", currency: "JPY", minimumFractionDigits: sep });
    }
console.log(formatComma(123456789, 2)); // ¥123,456,789.00
console.log(formatComma(123456789, 0)); // ¥123,456,789
console.log(formatComma(1234, 0)); // ¥1,234


-1

एक और तरीका:

function addCommas(nStr)
{
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}
var a  = addCommas(10000.00);
alert(a);

एक और अद्भुत प्लगइन: http://www.teamdf.com/web/jquery-number-format/178/


-1

इसे करने का दूसरा तरीका:

function addCommas(n){
  var s = "",
      r;

  while (n) {
    r = n % 1000;
    s = r + s;
    n = (n - r)/1000;
    s = (n ? "," : "") + s;
  }

  return s;
}

alert(addCommas(12345678));

-1

यहाँ @ टैकीथे पेरेस को एक टिप्पणी में उपलब्ध कराए गए @ बाॅयके फिडेल का मेरा कॉफ़ीस्क्रिप्ट संस्करण है

class Helpers
    @intComma: (number) ->
        # remove any existing commas
        comma = /,/g
        val = number.toString().replace comma, ''

        # separate the decimals
        valSplit = val.split '.'

        integer = valSplit[0].toString()
        expression = /(\d+)(\d{3})/
        while expression.test(integer)
            withComma = "$1,$2"
            integer = integer.toString().replace expression, withComma

        # recombine with decimals if any
        val = integer
        if valSplit.length == 2
            val = "#{val}.#{valSplit[1]}"

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