परिचय: संख्याओं में अल्पविराम सिर्फ सौंदर्यशास्त्र क्यों नहीं है
\n\nकल्पना करें: आप स्क्रीन पर किसी कर्मचारी का वेतन प्रदर्शित कर रहे हैं — 1500000 रुपये। आँखें भटक जाती हैं, शून्य से शून्य चिपक जाता है, और आप तीन बार अंक गिनते हैं। अब कल्पना करें 1,500,000 — राशि की तत्काल समझ। अंतर बहुत बड़ा है।
Stack Overflow पर प्रश्न ".NET String.Format() to add commas in thousands place for a number" ने दसियों हज़ार बार देखा गया है। इसका मतलब है कि दुनिया भर के डेवलपर्स एक ही कार्य से जूझ रहे हैं: C# में किसी संख्या को हजार विभाजकों के साथ खूबसूरती और सही तरीके से कैसे फ़ॉर्मेट किया जाए। आज हम सभी दृष्टिकोणों पर चर्चा करेंगे — क्लासिक String.Format से लेकर C# की आधुनिक क्षमताओं तक।
यदि आप C# में लिखते हैं और रिपोर्ट, वित्तीय डेटा के साथ काम करते हैं या बस चाहते हैं कि आपका UI पेशेवर दिखे — यह लेख आपके लिए है। चलिए शुरू करते हैं!
\n\nString.Format() क्या है और इसकी आवश्यकता क्यों है?
\n\nString.Format() एक स्थैतिक विधि है जो आपको फ़ॉर्मेटिंग नियंत्रण के साथ एक टेम्पलेट स्ट्रिंग में वेरिएबल के मान सम्मिलित करने की अनुमति देती है। सरल संयोजन के विपरीत, यह लचीलापन प्रदान करती है: आप निर्दिष्ट कर सकते हैं कि संख्या को कैसे प्रदर्शित किया जाए — विभाजकों के साथ, दशमलव के बाद निश्चित अंकों के साथ, मुद्रा प्रारूप में, इत्यादि।
सिंटैक्स सरल है: String.Format("{0:N}", number), जहाँ 0 तर्क का सूचकांक है, और N फ़ॉर्मेट निर्दिष्टकर्ता है। लेकिन शैतान, हमेशा की तरह, विवरण में है।
मुख्य विधि: "N" फ़ॉर्मेट के साथ String.Format
\n\nकिसी संख्या में अल्पविराम जोड़ने का सबसे सरल और स्पष्ट तरीका फ़ॉर्मेट निर्दिष्टकर्ता "N" (Number शब्द से) का उपयोग करना है। यह स्वचालित रूप से हजार विभाजक जोड़ता है और दशमलव स्थानों की संख्या निर्धारित करता है (डिफ़ॉल्ट रूप से — 2)।
int number = 1234567;\nstring formatted = String.Format("{0:N}", number);\nConsole.WriteLine(formatted); // आउटपुट: 1,234,567.00\n\n\nयदि आपको दशमलव स्थानों की आवश्यकता नहीं है, तो "N0" निर्दिष्ट करें — शून्य का अर्थ है "दशमलव के बाद शून्य अंक":
string formatted = String.Format("{0:N0}", number);\nConsole.WriteLine(formatted); // आउटपुट: 1,234,567\n\n\nमहत्वपूर्ण: हजार विभाजक का प्रतीक वर्तमान संस्कृति (CultureInfo) पर निर्भर करता है। रूसी लोकेल में यह एक स्पेस होगा (1 234 567), अंग्रेज़ी में — अल्पविराम। यदि आपको क्षेत्रीय सेटिंग्स की परवाह किए बिना अल्पविराम चाहिए, तो आगे पढ़ें।
विकल्प: ToString("N") और स्ट्रिंग इंटरपोलेशन
\n\nआधुनिक C# अधिक सुरुचिपूर्ण तरीके प्रदान करता है। String.Format के बजाय, आप सीधे संख्या पर ToString विधि को कॉल कर सकते हैं:
string formatted = number.ToString("N0");\nConsole.WriteLine(formatted); // 1,234,567\n\n\nऔर यदि आप C# 6 और उससे ऊपर का उपयोग कर रहे हैं, तो स्ट्रिंग इंटरपोलेशन कोड को और अधिक पठनीय बना देगा:
\n\nstring formatted = $"{number:N0}";\nConsole.WriteLine(formatted); // 1,234,567\n\n\nइंटरपोलेशन मूलतः वही String.Format है, लेकिन सिंटैक्सिक रूप से अधिक सुखद है। यह हुड के नीचे String.Format कॉल में संकलित होता है, इसलिए प्रदर्शन समान है।
बारीक ट्यूनिंग: कस्टम फ़ॉर्मेट निर्दिष्टकर्ता
\n\nकभी-कभी अंतर्निहित "N" फ़ॉर्मेट पर्याप्त नहीं होता है। उदाहरण के लिए, आपको चाहिए:
- \n
- अल्पविराम के बजाय स्पेस का उपयोग करना \n
- सकारात्मक संख्याओं के लिए "+" चिह्न दिखाना \n
- संख्याओं को चौड़ाई के अनुसार संरेखित करना \n
ऐसे मामलों के लिए, कस्टम फ़ॉर्मेट स्ट्रिंग मौजूद हैं। यहाँ बताया गया है कि # या 0 प्रतीक का उपयोग करके मैन्युअल रूप से हजार विभाजक कैसे सेट करें:
int number = 1234567;\nstring customFormat = "#,##0";\nstring formatted = number.ToString(customFormat);\nConsole.WriteLine(formatted); // 1,234,567\n\n\nआइए समझें कि "#,##0" का क्या अर्थ है:
- \n
#— वैकल्पिक अंक \n