Kotlin में String को Long में बदलना: 5 घातक गलतियाँ और उनसे कैसे बचें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Kotlin में String को Long में कैसे बदलें और पागल न हों: सामान्य गलतियों का विश्लेषण

\n\n

Kotlin में हर डेवलपर को देर-सबेर एक कार्य का सामना करना पड़ता है: एक स्ट्रिंग लेनी है, जो उपयोगकर्ता ने दर्ज की, API से आई या फ़ाइल से पढ़ी गई, और उसे Long प्रकार की संख्या में बदलना है। लगता है, इससे आसान क्या हो सकता है? लेकिन यहीं पर, बिना किसी कारण के, शुरुआती (और अनुभवी प्रोग्रामर भी) ऐसी गलतियाँ करते हैं जो एप्लिकेशन को क्रैश कर देती हैं, खाली स्क्रीन दिखाती हैं और डीबगिंग की रातों को नींद हराम कर देती हैं।

\n\n

इस लेख में, हम Kotlin में String को Long में बदलने की पाँच सबसे सामान्य गलतियों का विश्लेषण करेंगे। आप न केवल यह सीखेंगे कि उन्हें कैसे ठीक किया जाए, बल्कि यह भी कि ऐसा कोड कैसे लिखा जाए जो पहले ही अमान्य इनपुट पर न टूटे। चलिए शुरू करते हैं!

\n\n

गलती नंबर 1: अपवाद प्रबंधन के बिना toLong() का भोलापन से उपयोग

\n\n

सबसे सीधा तरीका है स्ट्रिंग पर toLong() मेथड को कॉल करना। हाँ, यह काम करता है, लेकिन केवल तभी जब स्ट्रिंग में कोई सही संख्या हो। अन्यथा — नमस्ते, NumberFormatException!

\n\n
val userInput = "123abc"\nval number: Long = userInput.toLong() // NumberFormatException फेंकेगा!
\n\n

यह बुरा क्यों है? रनटाइम में अपवाद हमेशा एक जोखिम होता है। यदि आपका एप्लिकेशन इसे हैंडल नहीं करता है, तो उपयोगकर्ता को क्रैश दिखाई देगा।

\n\n

कैसे ठीक करें? try-catch का उपयोग करें या, इससे भी बेहतर, एक सुरक्षित विकल्प — toLongOrNull() का उपयोग करें।

\n\n
val userInput = "123abc"\nval number: Long? = userInput.toLongOrNull() // null लौटाएगा, कोई अपवाद नहीं\nprintln(number) // null
\n\n

toLongOrNull() मेथड आपका उद्धारकर्ता है। यदि स्ट्रिंग को परिवर्तित नहीं किया जा सकता है, तो यह बस null लौटाता है, और आप इस मामले को शांति से संभाल सकते हैं।

\n\n

गलती नंबर 2: null और खाली स्ट्रिंग को अनदेखा करना

\n\n

Kotlin में, प्रकार स्पष्ट रूप से nullable और non-null में विभाजित होते हैं। यदि आप किसी ऐसी स्ट्रिंग पर toLong() कॉल करने का प्रयास करते हैं जो null हो सकती है, तो कंपाइलर आपको अनुमति नहीं देगा। लेकिन एक पेच है: खाली स्ट्रिंग ("") null नहीं है, और यह भी अपवाद फेंकेगी।

\n\n
val nullableString: String? = null\n// nullableString.toLong() // कंपाइलेशन त्रुटि: केवल safe (?.) या non-null asserted (!!.) कॉल\n\nval emptyString = ""\nemptyString.toLongOrNull() // null, सब ठीक है
\n\n

व्यावहारिक सुझाव: हमेशा स्ट्रिंग को खाली होने की जाँच करें या एल्विस ऑपरेटर ?: के साथ toLongOrNull() का उपयोग करें।

\n\n
fun parseUserAge(input: String?): Long {\n    return input?.toLongOrNull() ?: 0L // यदि null या संख्या नहीं है — 0 लौटाएँ\n}
\n\n

यह दृष्टिकोण कोड को मुहावरेदार और सुरक्षित बनाता है।

\n\n

गलती नंबर 3: रिक्त स्थान और अदृश्य वर्णों को भूलना

\n\n

उपयोगकर्ता अप्रत्याशित प्राणी हैं। वे गलती से संख्या से पहले या अंत में एक स्पेस डाल सकते हैं। फ़ाइल से स्ट्रिंग में न्यूलाइन वर्ण \\n हो सकते हैं। toLongOrNull() मेथड स्ट्रिंग को ट्रिम नहीं कर सकता — यह उम्मीद करता है कि स्ट्रिंग में केवल अंक (और संभवतः माइनस चिह्न) हों।

\n\n
val dirtyString = "  42  "\ndirtyString.toLongOrNull() // null, क्योंकि स्पेस हैं
\n\n

समाधान: रूपांतरण से पहले हमेशा trim() कॉल करें।

\n\n
val cleanString = dirtyString.trim()\nval number: Long? = cleanString.toLongOrNull()\nprintln(number) // 42
\n\n

यह बग से बचने के सबसे सरल और प्रभावी तरीकों में से एक है। नियम याद रखें: convert करने से पहले trim करें।

\n\n

गलती नंबर 4: लोकलाइज़ेशन और विभाजकों की समस्या

\n\n

विभिन्न देशों में संख्याएँ अलग-अलग लिखी जाती हैं। अमेरिका और रूस में, हज़ारों को अलग करने के लिए अल्पविराम (1,234) या स्पेस (1 234) का उपयोग किया जाता है, और दशमलव भाग को बिंदु से अलग किया जाता है। यूरोप में, इसका उल्टा है: अल्पविराम दशमलव विभाजक है। Kotlin डिफ़ॉल्ट रूप से "स्वच्छ" की उम्मीद करता है

ब्लॉग

पुस्तक अनुशंसाएँ