JavaScript printf और String.Format का एनालॉग: प्रो की तरह स्ट्रिंग्स को कैसे फ़ॉर्मेट करें?
\n\nक्या आपने कभी JavaScript में ऐसा कोड लिखा है?
\n\nlet name = 'अलेक्सेय';\nlet age = 28;\nconsole.log('नमस्ते, मेरा नाम ' + name + ' है और मैं ' + age + ' साल का हूँ।');\n\nअगर हाँ — तो आप जानते हैं कि यह कितना परेशान करने वाला है। बार-बार कोट्स खोलना और बंद करना, प्लस लगाना, स्पेस में उलझना। और अगर 5-6 वेरिएबल डालने हों? भयानक!
\n\nअन्य भाषाओं में यह समस्या बहुत पहले हल हो गई थी। Python में f"नमस्ते, {name}" और "%s %d" % (name, age) है। C में — प्रसिद्ध printf। C# और Java में — String.Format। और JavaScript में क्या?
स्पॉयलर: समाधान मौजूद है, और एक से अधिक। इस लेख में हम JavaScript में स्ट्रिंग फ़ॉर्मेटिंग के सभी तरीकों का विश्लेषण करेंगे — क्लासिक से लेकर आधुनिक तक। आप जानेंगे कि अपने कार्य के लिए JavaScript में printf का कौन सा एनालॉग चुनना है, और हमेशा के लिए कॉन्केटनेशन को भूल जाएंगे।
\n\n"JavaScript equivalent to printf/String.Format" प्रश्न इतना लोकप्रिय क्यों है?
\n\nStack Overflow पर इस प्रश्न को सैकड़ों हज़ारों व्यूज़ मिले हैं। और यह कोई संयोग नहीं है। हर डेवलपर जो किसी दूसरी भाषा से JavaScript पर आता है, सबसे पहले स्ट्रिंग फ़ॉर्मेटिंग के परिचित टूल की तलाश करता है।
\n\nसमस्या यह है कि शुद्ध JavaScript में printf या String.Format का कोई अंतर्निहित एनालॉग नहीं है। केवल कॉन्केटनेशन है (+ के माध्यम से स्ट्रिंग्स को जोड़ना)। लेकिन डेवलपर्स ने कई सुंदर समाधान खोज लिए हैं, और हम उनका विश्लेषण करेंगे।
तरीका 1: टेम्पलेट स्ट्रिंग्स (Template Literals) — आधुनिक मानक
\n\nES6 (2015) से शुरू करके, JavaScript में टेम्पलेट स्ट्रिंग्स आ गईं। यह रोज़मर्रा के उपयोग के लिए printf और String.Format का सबसे अच्छा एनालॉग है। ये सभी आधुनिक ब्राउज़रों और Node.js में काम करती हैं।
\n\nसिंटैक्स: सामान्य कोट्स के बजाय बैकटिक्स ` का उपयोग करें, और वेरिएबल्स को ${} के माध्यम से डालें।
let name = 'मारिया';\nlet age = 25;\nlet city = 'मॉस्को';\n\n// कॉन्केटनेशन के बजाय\nlet message = `नमस्ते, मेरा नाम ${name} है, मैं ${age} साल की हूँ, मैं ${city} से हूँ।`;\nconsole.log(message); \n// आउटपुट: नमस्ते, मेरा नाम मारिया है, मैं 25 साल की हूँ, मैं मॉस्को से हूँ।\n\nलेकिन यह सब कुछ नहीं है! ${} के अंदर कोई भी JavaScript एक्सप्रेशन निष्पादित किया जा सकता है:
let a = 10;\nlet b = 5;\n\nconsole.log(`योग: ${a + b}`); // योग: 15\nconsole.log(`बड़ा? ${a > b ? 'हाँ' : 'नहीं'}`); // बड़ा? हाँ\nconsole.log(`यादृच्छिक: ${Math.random()}`); // यादृच्छिक: 0.4837...\n\nयह JavaScript में printf का सबसे अच्छा एनालॉग क्यों है?
\n- \n
- पठनीयता — कोड इन्सर्ट के साथ सामान्य टेक्स्ट जैसा दिखता है \n
- सुरक्षा — एस्केपिंग स्वचालित रूप से होती है \n
- मल्टी-लाइन — टेक्स्ट को कई पंक्तियों में लिखा जा सकता है \n
- एक्सप्रेशन — गणना के परिणाम डाले जा सकते हैं \n
मल्टी-लाइन टेम्पलेट स्ट्रिंग्स
\n\nlet html = `\n<div class="card">\n <h2>${title}</h2>\n <p>${description}</p>\n</div>\n`;\n\nconsole.log(html);\n// आउटपुट — लाइन ब्रेक के साथ साफ-सुथरा HTML\n\nकॉन्केटनेशन से तुलना करें — अंतर बहुत बड़ा है!
\n\nतरीका 2: sprintf-js लाइब्रेरी — JavaScript में क्लासिक printf
\n\nअगर आप C के printf या Python के %-फ़ॉर्मेटिंग के लिए पुरानी यादों में हैं, तो आपके पास एक बढ़िया विकल्प है — sprintf-js लाइब्रेरी।
npm के माध्यम से इंस्टॉलेशन:
\nnpm install sprintf-js\n\nउपयोग:
\n\nconst sprintf = require('sprintf-js').sprintf;\nconst vsprintf = require('sprintf-js').vsprintf;\n\n// सरल फ़ॉर्मेटिंग\nlet result = sprintf('नमस्ते, %s! आप %d साल के हैं।', 'इवान', 30);\nconsole.log(result); // नमस्ते, इवान! आप 30 साल के हैं।\n