Go में स्पेस हटाना: स्ट्रिंग से अनावश्यक वर्णों से कैसे छुटकारा पाएं

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

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

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

हर डेवलपर से परिचित समस्या

\n\n

कल्पना करें: आप एक लॉग पार्सर लिख रहे हैं, फॉर्म से उपयोगकर्ता इनपुट प्रोसेस कर रहे हैं, या API के लिए डेटा तैयार कर रहे हैं। स्ट्रिंग्स शुरुआत और अंत में अतिरिक्त स्पेस के साथ आती हैं। यदि उन्हें नहीं हटाया गया — तो बग, टूटी हुई तुलनाएं, गलत JSON और डीबगिंग के घंटे बर्बाद होंगे। यह एक क्लासिक समस्या है, जिसने Stack Overflow पर हज़ारों व्यूज़ जुटाए हैं। आज हम इसे Go में हल करेंगे — तेज़, सुरुचिपूर्ण और बिना किसी आश्चर्य के।

\n\n

इस गाइड में आप सीखेंगे:

\n
    \n
  • स्पेस हटाने के लिए मानक लाइब्रेरी strings का उपयोग कैसे करें।
  • \n
  • TrimSpace, TrimLeft और TrimRight में क्या अंतर है।
  • \n
  • गैर-मानक whitespace वर्णों के लिए अपना कस्टम फ़ंक्शन कैसे लिखें।
  • \n
  • Unicode और टैबुलेशन के साथ गलतियों से कैसे बचें।
  • \n
\n\n

चलिए शुरू करते हैं!

\n\n

त्वरित शुरुआत: strings.TrimSpace

\n\n

स्ट्रिंग के दोनों सिरों से स्पेस हटाने का सबसे सरल और लोकप्रिय तरीका मानक पैकेज strings से फ़ंक्शन strings.TrimSpace का उपयोग करना है। यह उन सभी वर्णों को हटाता है जिन्हें Go "स्पेस" (whitespace) मानता है: सामान्य स्पेस, टैब, नई लाइनें, कैरिज रिटर्न और यहां तक कि वर्टिकल टैब भी।

\n\n

कोड में यह इस तरह दिखता है:

\n\n
package main\n\nimport (\n    "fmt"\n    "strings"\n)\n\nfunc main() {\n    raw := "   नमस्ते, दुनिया!   \\n\\t"\n    cleaned := strings.TrimSpace(raw)\n    \n    fmt.Printf("मूल: %q\\n", raw)\n    fmt.Printf("साफ़: %q\\n", cleaned)\n}\n
\n\n

आउटपुट:

\n
मूल: "   नमस्ते, दुनिया!   \\n\\t"\nसाफ़: "नमस्ते, दुनिया!"\n
\n\n

ध्यान दें: fmt.Printf में %q स्ट्रिंग को escape-अनुक्रमों के साथ दिखाता है — यह डीबगिंग के लिए सुविधाजनक है, ताकि छिपे हुए वर्णों को देखा जा सके।

\n\n

कब उपयोग करें: 90% मामलों में यह पर्याप्त है। यदि आपको बस स्ट्रिंग के किनारों से अनावश्यक वर्ण हटाने हैं — तो TrimSpace का उपयोग करें।

\n\n

बारीक ट्यूनिंग: TrimLeft और TrimRight

\n\n

कभी-कभी केवल बाएं या केवल दाएं से स्पेस हटाने की आवश्यकता होती है। इसके लिए Go में strings.TrimLeft और strings.TrimRight हैं। लेकिन एक बारीकी है: ये डिफ़ॉल्ट रूप से "स्पेस वर्णों" के साथ नहीं, बल्कि दिए गए वर्णों के सेट के साथ काम करते हैं।

\n\n

उदाहरण:

\n\n
package main\n\nimport (\n    "fmt"\n    "strings"\n)\n\nfunc main() {\n    s := "   \\t\\n   हैलो   "\n    \n    // केवल बाएं से हटाएं (स्पेस, टैब, नई लाइनें)\n    left := strings.TrimLeft(s, " \\t\\n")\n    fmt.Printf("बाएं: %q\\n", left)\n    \n    // केवल दाएं से हटाएं (केवल स्पेस)\n    right := strings.TrimRight(s, " ")\n    fmt.Printf("दाएं: %q\\n", right)\n}\n
\n\n

आउटपुट:

\n
बाएं: "हैलो   "\nदाएं: "   \\t\\n   हैलो"\n
\n\n

महत्वपूर्ण: TrimLeft और TrimRight दूसरे आर्गुमेंट के सभी वर्णों को तब तक हटाते हैं जब तक उन्हें कोई ऐसा वर्ण नहीं मिलता जो उसमें नहीं है। यदि आप केवल स्पेस " " निर्दिष्ट करते हैं, तो टैब \\t अछूता रहेगा।

\n\n

एक तरफ के लिए TrimSpace का एनालॉग

\n\n

यदि आपको केवल बाएं या केवल दाएं से सभी whitespace हटाने की आवश्यकता है, लेकिन सभी वर्णों को सूचीबद्ध करने में आलस आता है, तो आप एक छोटा रैपर लिख सकते हैं:

\n\n
func trimLeftSpace(s string) string {\n    return strings.TrimLeft(s, " \\t\\n\\r\\v\\f")\n}\n\nfunc trimRightSpace(s string) string {\n    return strings.TrimRight(s, " \\t\\n\\r\\v\\f")\n}\n
\n\n

या, संक्षिप्तता पसंद करने वालों के लिए, एक तरकीब के साथ strings.TrimSpace का उपयोग करें:

\n\n
// केवल बाएं से हटाएं: पहले रिवर्स करें, फिर TrimSpace, फिर वापस रिवर्स करें\nfunc trimLeftSpace(s string) string {\n    runes := []rune(s)\n    for i, r := range runes {\n        if !unicode.IsSpace(r) {\n            return string(runes[i:])\n        }\n    }\n                

ब्लॉग

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