स्ट्रिंग का जादू: Kotlin में फ़ॉर्मेटिंग क्यों एक कला है
\n\nकल्पना करें: आप खेल प्रशिक्षण ट्रैकिंग के लिए एक ऐप लिख रहे हैं। आपको एक संदेश प्रदर्शित करना है: "नमस्ते, अलेक्से! आपका समय: 42.5 किमी 2:15:07 में। सर्वश्रेष्ठ परिणाम 3.2% बेहतर है।"। यदि आप Java शैली में कॉन्केटनेशन (जोड़कर) का उपयोग करके ऐसी स्ट्रिंग बनाते हैं - तो कोड प्लस और कोट्स का गड़बड़ ढेर बन जाएगा। Kotlin में स्ट्रिंग फ़ॉर्मेटिंग इस समस्या को सुंदर और शक्तिशाली रूप से हल करती है।
\n\nइस लेख में, हम Kotlin String formatting के 5 तरीकों पर चर्चा करेंगे। आप सीखेंगे कि कब इंटरपोलेशन का उपयोग करना है, कब पुराने अच्छे String.format() का, और कब उन्नत टेम्पलेट का। चलिए शुरू करते हैं!
1. स्ट्रिंग इंटरपोलेशन: Kotlin की रोटी और मक्खन
\n\nसबसे लोकप्रिय और सरल तकनीक - Kotlin में स्ट्रिंग इंटरपोलेशन। यह सीधे भाषा में निर्मित है: वेरिएबल डालने के लिए डॉलर चिह्न $ और एक्सप्रेशन के लिए ${} का उपयोग करें।
val name = "अन्ना"\nval age = 28\nval message = "मेरा नाम $name है, मेरी उम्र $age वर्ष है।"\nprintln(message) // मेरा नाम अन्ना है, मेरी उम्र 28 वर्ष है।\n\n// घुंघराले कोष्ठक के साथ एक्सप्रेशन\nval price = 49.99\nval discount = 0.2\nval finalPrice = "छूट के बाद मूल्य: ${price * (1 - discount)} रु."\nprintln(finalPrice) // छूट के बाद मूल्य: 39.992 रु.\n\nलाभ: पठनीयता, गति, कोई अतिरिक्त कॉल नहीं। नुकसान: संख्याओं के प्रारूप पर कोई नियंत्रण नहीं (जैसे, दशमलव के बाद अंकों की संख्या)।
\n\nकब उपयोग करें
\n- \n
- सरल संदेश, लॉग, UI-टेक्स्ट \n
- जब संख्याओं या तिथियों के प्रारूप के सटीक समायोजन की आवश्यकता न हो \n
println()याStringBuilderके अंदर \n
2. String.format(): Kotlin में Java की विरासत
\n\nयदि प्रारूप पर नियंत्रण चाहिए - तो Kotlin में String.format() मदद करता है। यह Java विधि String.format() के लिए एक सीधा पुल है, जिसमें समान विनिर्देशक (%s, %d, %.2f) हैं।
val pi = 3.1415926535\nval formatted = String.format("तीन अंकों के साथ π संख्या: %.3f", pi)\nprintln(formatted) // तीन अंकों के साथ π संख्या: 3.142\n\n// कई तर्क\nval name = "इवान"\nval score = 95\nval result = String.format("%s ने 100 में से %d अंक प्राप्त किए", name, score)\nprintln(result) // इवान ने 100 में से 95 अंक प्राप्त किए\n\nएक महत्वपूर्ण बारीकियां: Kotlin String.format स्ट्रिंग फ़ॉर्मेटिंग type-safe नहीं है - यदि गलत प्रकार पास किया जाता है, तो रनटाइम पर अपवाद प्राप्त होगा। स्थैतिक जांच के लिए Kotlin-विशिष्ट विधियों का उपयोग करें (अनुभाग 5 देखें)।
\n\n3. MessageFormat: जब प्लेसहोल्डर के साथ टेम्पलेट की आवश्यकता हो
\n\nदोहराए जाने वाले तर्कों या स्थानीयकरण वाले जटिल टेम्पलेट के लिए - Kotlin में MessageFormat। यह शब्द रूप (एकवचन/बहुवचन) चुन सकता है और तिथियों को प्रारूपित कर सकता है।
\n\nimport java.text.MessageFormat\n\nval pattern = "{0} के पास {1} {0,choice,0#सेब|1#सेब|2#सेब} हैं।"\nval result = MessageFormat.format(pattern, "पेट्या", 5)\nprintln(result) // पेट्या के पास 5 सेब हैं।\n\n// तिथि के साथ\nval datePattern = "आज {0,date,long} है। समय: {0,time,short}"\nval now = java.util.Date()\nprintln(MessageFormat.format(datePattern, now))\n\nकब चुनें: अंतर्राष्ट्रीयकरण (i18n), जटिल विभक्तियाँ, 5+ तर्कों वाले टेम्पलेट। नुकसान: भारी सिंटैक्स और java.text पर निर्भरता।
4. Kotlin एक्सटेंशन: संक्षिप्तता और प्रकार सुरक्षा
\n\nKotlin समुदाय स्ट्रिंग फ़ॉर्मेटिंग के लिए एक्सटेंशन पसंद करता है। आप अपना खुद का पहिया बना सकते हैं या तैयार लाइब्रेरी (जैसे, kotlinx.string) का उपयोग कर सकते हैं।
// सबसे सरल एक्सटेंशन\nfun String.format(vararg args: Any?): String {\n return String.format(this, *args)\n}\n\n// उपयोग\nval template = "नमस्ते, %s! आपका बैलेंस: %.2f USD"\nval msg = template.format("मैक्सिम", 1234.5678)\nprintln(msg) // न