दिलचस्प पोस्ट
PHP में file_get_contents का उपयोग कैसे करें? अजगर में एक पूर्णांक में स्ट्रिंग सूची को कैसे परिवर्तित करें Android में मिनट के अंतराल के साथ टाइमपाकर दिखाएं UIImageView के भीतर एक base64 छवि को कैसे प्रदर्शित करें? ओपनजीएल ईएस दृश्य में एनीमेशन फ्रीज होता है जब यूआईएसक्रोलएव्यू को iPhone पर खींच लिया जाता है मैं जावा में जावास्क्रिप्ट का उपयोग कैसे कर सकता हूं? मैं एक सार सी # वर्ग पर एक सार निर्माता क्यों नहीं बना सकता? क्या मैं अपने JSON में एक बच्चे की संपत्ति के लिए मेरी कक्षा में एक संपत्ति को मैप करने के लिए एक विशेषता में पथ निर्दिष्ट कर सकता हूँ? सी 8 9 मानक के साथ एमओपीआई का उपयोग करना Google कोड से एसवीएन / कछुआ का उपयोग कर मैं कोड कैसे डाउनलोड करूं? XML-SelectNodes डिफ़ॉल्ट-नेमस्पेस के साथ XmlNamespaceManager द्वारा अपेक्षित के रूप में काम नहीं कर रहा है डिफ़ॉल्ट चयन विकल्प रिक्त के रूप में प्रतिक्रिया में राज्य और सहारा के बीच क्या अंतर है? क्या विंडोज के लिए unistd.h के लिए एक प्रतिस्थापन (दृश्य सी) है? फ़ोल्डर्स / फ़ाइलों को अनदेखा करते हैं, जब Directory.GetFiles () को एक्सेस से इनकार कर दिया जाता है

JavaScript में अग्रणी शून्य के साथ एक संख्या पैड

संभव डुप्लिकेट:
मैं JavaScript का उपयोग कर एक ज़ेरोफ़ल्ड मान कैसे बना सकता हूं?

जावास्क्रिप्ट में, मुझे पैडिंग की आवश्यकता है I

उदाहरण के लिए, यदि मेरे पास 9 नंबर है, तो यह "0009" होगा। यदि मेरे पास बहुत से 10 कहना है, तो यह "0010" होगा। ध्यान दें कि यह हमेशा चार अंक कैसे बनाएगा।

ऐसा करने का एक तरीका यह है कि मैं शून्य से 0 सेकंड की संख्या को घटाना चाहूंगा जिसकी मुझे ज़रूरत है।

क्या ऐसा करने का एक मज़ेदार तरीका है?

वेब के समाधान से एकत्रित समाधान "JavaScript में अग्रणी शून्य के साथ एक संख्या पैड"

इतने "चालाक" अभी तक नहीं चल रहे हैं:

function pad(n, width, z) { z = z || '0'; n = n + ''; return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n; } 

जब आप किसी संख्या के साथ एक सरणी को इनिशियलाइज़ करते हैं, तो वह उस सरणी को उस मान पर सेट करता है जिससे सरणी में कई undefined तत्व होते हैं। हालांकि कुछ सरणी .join() विधियों मूल्यों के बिना सरणी तत्वों को छोड़ देते हैं, .join() नहीं करता है, या कम से कम पूरी तरह से नहीं; यह उन्हें मानता है जैसे कि उनका मान खाली स्ट्रिंग है। इस प्रकार आपको सरणी तत्वों के बीच शून्य वर्ण (या जो भी "z" है) की प्रति प्राप्त होती है; यही कारण है कि वहां + 1 ए है।

उदाहरण उपयोग:

 pad(10, 4); // 0010 pad(9, 4); // 0009 pad(123, 4); // 0123 pad(10, 4, '-'); // --10 
 function padToFour(number) { if (number<=9999) { number = ("000"+number).slice(-4); } return number; } 

ऐसा कुछ?

बोनस समझ से बाहर नहीं बल्कि एक आकर्षक लाइन ES6 संस्करण:

 let padToFour = number => number <= 9999 ? ("000"+number).slice(-4) : number; 

ES6isms:

  • let एक ब्लॉक स्कॉक्स्ड वेरिएबल (जैसा कि वे के फंक्शनल स्क्रॉपिंग के विपरीत)
  • => एक तीर का कार्य है जो अन्य चीजों के बीच function जगह लेता function और इसके मापदंडों द्वारा तैयार किया जाता है
  • यदि कोई तीर फ़ंक्शन एक एकल पैरामीटर लेता है तो आप कोष्ठक छोड़ सकते हैं (इसलिए number => )
  • यदि एक तीर फ़ंक्शन के शरीर में एक पंक्ति होती है जो return साथ शुरू होती है तो आप ब्रेसिज़ और return कीवर्ड को छोड़ सकते हैं और बस अभिव्यक्ति का उपयोग कर सकते हैं
  • फ़ंक्शन के शरीर को एक पंक्ति में लाने के लिए मैंने धोखा दिया और त्रिभुज अभिव्यक्ति का इस्तेमाल किया

प्रयत्न:

 String.prototype.lpad = function(padString, length) { var str = this; while (str.length < length) str = padString + str; return str; } 

अब परीक्षण करें:

 var str = "5"; alert(str.lpad("0", 4)); //result "0005" var str = "10"; // note this is string type alert(str.lpad("0", 4)); //result "0010" 

DEMO


ES8 में, हमारे पास नई विधि padStart और padEnd जो कि वाक्य रचना के नीचे है।

'स्ट्रिंग'.padStart (लक्ष्यरेखा [, पैडस्ट्रिंग]):

तो अब हम उपयोग कर सकते हैं

 const str = "5"; str.padStart(4, '0'); // '0005' 

मजेदार, मुझे हाल ही में यह करना था।

 function padDigits(number, digits) { return Array(Math.max(digits - String(number).length + 1, 0)).join(0) + number; } 

जैसे प्रयोग करें:

 padDigits(9, 4); // "0009" padDigits(10, 4); // "0010" padDigits(15000, 4); // "15000" 

सुंदर नहीं, लेकिन प्रभावी

आपने कहा था कि आपके पास नंबर है-

 String.prototype.padZero= function(len, c){ var s= '', c= c || '0', len= (len || 2)-this.length; while(s.length<len) s+= c; return s+this; } Number.prototype.padZero= function(len, c){ return String(this).padZero(len,c); } 

आप ऐसा कुछ कर सकते हैं:

 function pad ( num, size ) { return ( Math.pow( 10, size ) + ~~num ).toString().substring( 1 ); } 

संपादित करें: यह फ़ंक्शन के लिए केवल एक बुनियादी विचार था, लेकिन बड़ी संख्याओं (साथ ही अमान्य इनपुट) के लिए समर्थन जोड़ने के लिए, यह शायद बेहतर होगा:

 function pad ( num, size ) { if (num.toString().length >= size) return num; return ( Math.pow( 10, size ) + Math.floor(num) ).toString().substring( 1 ); } 

यह 2 बातें करता है:

  1. यदि संख्या निर्दिष्ट आकार से अधिक है, तो यह केवल संख्या वापस करेगा।
  2. ~~num स्थान पर Math.floor(num) का उपयोग करके बड़ी संख्या का समर्थन किया जाएगा।

मज़े के लिए, अतिरिक्त शून्य बनाने के लिए एक लूप का उपयोग करने के बजाय:

 function zeroPad(n,length){ var s=n+"",needed=length-s.length; if (needed>0) s=(Math.pow(10,needed)+"").slice(1)+s; return s; } 

यह वाकई 'चालाक' नहीं है, लेकिन प्रत्येक पैडिंग 0 लिए स्ट्रिंग कॉन्सटेनेशन करने की तुलना में पूर्णांक आपरेशन करने के लिए तेज़ है

 function ZeroPadNumber ( nValue ) { if ( nValue < 10 ) { return ( '000' + nValue.toString () ); } else if ( nValue < 100 ) { return ( '00' + nValue.toString () ); } else if ( nValue < 1000 ) { return ( '0' + nValue.toString () ); } else { return ( nValue ); } } 

यह फ़ंक्शन आपके विशेष आवश्यकता (4 अंकों के पेडिंग) के लिए भी कठिन है, इसलिए यह सामान्य नहीं है।

चूंकि आपने बताया है कि हमेशा 4 की लंबाई होने जा रहा है, मैं इस चालाक को बनाने के लिए कोई त्रुटि जांच नहीं करेगा। 😉

 function pad(input) { var BASE = "0000"; return input ? BASE.substr(0, 4 - Math.ceil(input / 10)) + input : BASE; } 

आइडिया: बस '0000' की जगह दी गई संख्या के साथ … मुद्दा यह है, अगर input 0 है, तो मुझे '0000' लौटने के लिए कड़ी मेहनत की आवश्यकता है। जबरदस्त हंसी।

यह काफी चालाक होना चाहिए

JSFiddler: http://jsfiddle.net/Up5Cr/