स्ट्रिंग ऑब्जेक्ट्स पकड़ अनुक्रम का आदेश दिया बाइट्स, आमतौर पर वर्ण, आमतौर पर मानव-पठनीय पाठ के टुकड़े बनाने के लिए। वे सभी प्रोग्रामिंग भाषाओं में एक बहुत ही सामान्य वस्तु प्रकार हैं, और माणिक स्ट्रिंग ऑब्जेक्ट बनाने, एक्सेस करने और हेरफेर करने के लिए कई उच्च-स्तरीय और कुछ निम्न-स्तरीय तरीके हैं।
स्ट्रिंग्स सबसे अधिक बार एक के साथ बनाई जाती हैं शाब्दिक स्ट्रिंग. ए शाब्दिक रूबी भाषा में एक विशेष वाक्यविन्यास है जो एक विशिष्ट प्रकार की एक वस्तु बनाता है। उदाहरण के लिए, 23 एक शाब्दिक है जो एक बनाता हैFixnum वस्तु। स्ट्रिंग शाब्दिकों के लिए, कई रूप हैं।
सिंगल-कोट्स और डबल-कोटेड स्ट्रिंग्स
अधिकांश भाषाओं में इसके समान एक स्ट्रिंग शाब्दिक है, इसलिए यह परिचित हो सकता है। उद्धरण के प्रकार, '(एकल उद्धरण, एपोस्ट्रोफी या कठिन उद्धरण) और "(डबल उद्धरण या कोमल बोली) स्ट्रिंग शाब्दिकों को संलग्न करने के लिए उपयोग किया जाता है, उनके बीच कुछ भी स्ट्रिंग वस्तुओं में बदल जाएगा। निम्न उदाहरण यह प्रदर्शित करता है।
लेकिन सिंगल और डबल कोट्स के बीच कुछ अंतर हैं। दोहरे भाव या नरम उद्धरण पर्दे के पीछे होने के लिए कुछ जादू सक्षम करें। सबसे उपयोगी स्ट्रिंग्स के अंदर प्रक्षेप है, एक स्ट्रिंग के बीच में एक चर के मूल्य को सम्मिलित करने के लिए उपयोगी है। यह का उपयोग करके हासिल किया है
#{ … } अनुक्रम। निम्न उदाहरण आपके नाम के लिए आपसे पूछेगा और आपके नाम को मुद्रित स्ट्रिंग स्ट्रिंग में डालने के लिए प्रक्षेप का उपयोग करके आपको शुभकामनाएं देगा।ध्यान दें कि कोई भी कोड ब्रेसिज़ के अंदर जा सकता है, न कि केवल चर नाम से। रूबी उस कोड का मूल्यांकन करेगा और जो कुछ भी लौटाएगा वह उसे स्ट्रिंग में डालने का प्रयास करेगा। तो आप आसानी से कह सकते हैं "नमस्कार, # {get.chomp}" और के बारे में भूल जाओ नाम चर। हालांकि, ब्रेसिज़ के अंदर लंबे एक्सप्रेशन नहीं डालना अच्छा है।
एकल उद्धरण, एपोस्ट्रोफ, या कठिन उद्धरण बहुत अधिक प्रतिबंधक हैं। एकल उद्धरण के अंदर, रूबी कोई प्रक्षेप नहीं करेगा या क्रम से बचो एकल उद्धरण चरित्र से बचने के अलावा और खुद को पीछे हटाना (\' तथा \\ क्रमशः)। यदि आप प्रक्षेप का उपयोग करने का इरादा नहीं रखते हैं, तो यह एकल उद्धरणों का उपयोग न करने की तुलना में अधिक बार करने की सिफारिश की जाती है।
निम्नलिखित उदाहरण एकल उद्धरण के अंदर एक चर को प्रक्षेपित करने का प्रयास करेंगे।
यदि आप इसे चलाते हैं तो आपको कोई त्रुटि नहीं मिलेगी, लेकिन क्या मुद्रित किया जाएगा?
प्रक्षेप क्रम को निर्बाध के माध्यम से पारित किया गया था।
जब मुझे सिंगल और डबल कोट्स का उपयोग करना चाहिए
यह शैली का मामला है। जब तक वे असुविधाजनक नहीं हो जाते, तब तक कुछ दोहरे उद्धरण चिह्नों का उपयोग करना पसंद करते हैं। जब तक प्रक्षेप व्यवहार का इरादा नहीं है, तब तक अन्य एकल उद्धरण का उपयोग करेंगे। स्वाभाविक कुछ भी नहीं है खतरनाक हर समय दोहरे उद्धरण चिह्नों का उपयोग करने के बारे में, लेकिन यह कुछ कोड को पढ़ना आसान बनाता है। कोड के माध्यम से पढ़ते समय आपको एक स्ट्रिंग पढ़ने की आवश्यकता नहीं है यदि आप जानते हैं कि इसमें कोई प्रक्षेप नहीं हैं क्योंकि आपको पता है कि स्ट्रिंग में स्वयं कोई दुष्प्रभाव नहीं होगा। तो जो स्ट्रिंग स्ट्रिंग शाब्दिक रूप आप उपयोग करते हैं, वह आपके ऊपर है, यहां कोई वास्तविक सही और गलत तरीका नहीं है।
भागने के दृश्य
क्या होगा अगर, एक स्ट्रिंग शाब्दिक में, आप एक उद्धरण चरित्र शामिल करना चाहते हैं? उदाहरण के लिए, स्ट्रिंग "स्टीव ने कहा" मू! " काम नहीं करेगा। और न होगा 'यह नहीं छू सकता!'. इन दोनों तारों में स्ट्रिंग के अंदर उद्धरण वर्ण शामिल है, प्रभावी रूप से स्ट्रिंग शाब्दिक को समाप्त करने और एक वाक्यविन्यास त्रुटि का कारण बनता है। आप उद्धरण वर्ण स्विच कर सकते हैं, जैसे 'स्टीव ने कहा "मू!", लेकिन यह वास्तव में समस्या को हल नहीं करता है। इसके बजाय, आप स्ट्रिंग के अंदर किसी भी बोली चरित्र से बच सकते हैं, और यह अपना विशेष अर्थ खो देगा (इस मामले में, विशेष अर्थ स्ट्रिंग को बंद करना है)।
एक चरित्र से बचने के लिए, इसे बैकलैश चरित्र के साथ प्रस्तुत करें। बैकस्लैश चरित्र रूबी को बताता है कि अगले चरित्र के किसी विशेष अर्थ को अनदेखा कर सकता है। यदि यह एक मिलान उद्धरण वर्ण है, तो स्ट्रिंग को समाप्त न करें। यदि यह एक हैश संकेत है, तो एक प्रक्षेप ब्लॉक शुरू न करें। निम्न उदाहरण विशेष वर्णों से बचने के लिए बैकलैश के इस उपयोग को प्रदर्शित करता है।
बैकस्लैश चरित्र का उपयोग निम्नलिखित वर्ण से किसी विशेष अर्थ को हटाने के लिए किया जा सकता है, लेकिन भ्रमित करने के लिए, इसका उपयोग दोहरे-उद्धरण वाले तारों में विशेष व्यवहार को दर्शाने के लिए भी किया जा सकता है। इनमें से अधिकांश विशेष व्यवहारों को वर्णों और बाइट अनुक्रमों के साथ करना पड़ता है जिन्हें टाइप नहीं किया जा सकता है और न ही उनका प्रतिनिधित्व किया जा सकता है। सभी स्ट्रिंग्स कैरेक्टर स्ट्रिंग्स नहीं हैं या टर्मिनल के लिए इच्छित कंट्रोल सीक्वेंस हो सकते हैं, न कि उपयोगकर्ता। रूबी आपको बैकस्लैश एस्केप चरित्र का उपयोग करके इस प्रकार के तार डालने की क्षमता प्रदान करता है।
- \ n - एक न्यूलाइन वर्ण। डालता है विधि यह स्वचालित रूप से करती है, लेकिन यदि आप एक स्ट्रिंग के बीच में एक सम्मिलित करना चाहते हैं, या स्ट्रिंग को इसके अलावा किसी अन्य चीज के लिए नियत किया गया है डालता है विधि, आप एक स्ट्रिंग में एक नई रेखा सम्मिलित करने के लिए इसका उपयोग कर सकते हैं।
- \ t - एक टैब वर्ण। टैब वर्ण कर्सर को (अधिकांश टर्मिनलों पर) 8 के एक से अधिक पर ले जाता है, इसलिए यह प्रदर्शन सारणीबद्ध डेटा के लिए बहुत उपयोगी है। हालांकि, ऐसा करने के बेहतर तरीके हैं, और टैब चरित्र का उपयोग करना थोड़ा पुरातन या हैकिश माना जाता है।
- \ nnn - 3 संख्याओं का अनुसरण करने वाला एक बैकस्लैश 3 अष्टक अंकों द्वारा दर्शाए गए ASCII वर्ण को निरूपित करेगा। अष्टकोणीय क्यों? ज्यादातर ऐतिहासिक कारणों से।
- \ xnn - एक बैकस्लैश, एक एक्स और 2 हेक्स अंक। ऑक्टल संस्करण के समान, केवल हेक्स अंकों के साथ।
आप शायद इनमें से अधिकांश का उपयोग कभी नहीं करेंगे, लेकिन जानते हैं कि वे मौजूद हैं। और यह भी याद रखें कि वे केवल दो-उद्धृत स्ट्रिंग्स में काम करते हैं।
अगले पृष्ठ में मल्टी-लाइन स्ट्रिंग्स और एक वैकल्पिक सिंटैक्स स्ट्रिंग स्ट्रिंग के लिए चर्चा की गई है।
मल्टी-लाइन स्ट्रिंग्स
अधिकांश भाषाएँ बहु-पंक्ति स्ट्रिंग शाब्दिकों की अनुमति नहीं देती हैं, लेकिन रूबी करती है। अपने तार को समाप्त करने और अगली पंक्ति के लिए अधिक तार जोड़ने की आवश्यकता नहीं है, रूबी केवल डिफ़ॉल्ट के साथ बहु-लाइन स्ट्रिंग शाब्दिक संभालती है वाक्य - विन्यास.
अल्टरनेट सिंटेक्स
अधिकांश अन्य शाब्दिकों की तरह, रूबी स्ट्रिंग शाब्दिकों के लिए एक वैकल्पिक वाक्यविन्यास प्रदान करता है। यदि आप अपने शाब्दिक के अंदर बहुत सारे उद्धरण वर्णों का उपयोग कर रहे हैं, उदाहरण के लिए, आप इस वाक्यविन्यास का उपयोग करना चाह सकते हैं। जब आप इस वाक्यविन्यास का उपयोग करते हैं, तो यह स्टाइल की बात होती है, इन्हें आमतौर पर स्ट्रिंग्स की आवश्यकता नहीं होती है।
वैकल्पिक सिंटैक्स का उपयोग करने के लिए, एकल-उद्धृत स्ट्रिंग्स के लिए निम्न अनुक्रम का उपयोग करें % q {…}. इसी तरह, डबल-उद्धृत स्ट्रिंग्स के लिए निम्न सिंटैक्स का उपयोग करें % Q {…}. यह वैकल्पिक वाक्यविन्यास सभी नियमों का पालन करता है जैसे कि उनके "सामान्य" चचेरे भाई। इसके अलावा, ध्यान दें कि आप ब्रेसिज़ के बजाय अपनी इच्छानुसार किसी भी वर्ण का उपयोग कर सकते हैं। यदि आप एक ब्रेस, स्क्वायर ब्रैकेट, कोण ब्रैकेट या कोष्ठक का उपयोग करते हैं, तो मिलान वर्ण शाब्दिक समाप्त हो जाएगा। यदि आप मिलान वर्णों का उपयोग नहीं करना चाहते हैं, तो आप किसी अन्य प्रतीक (कुछ भी अक्षर या संख्या नहीं) का उपयोग कर सकते हैं। शाब्दिक एक और प्रतीक के साथ बंद हो जाएगा। निम्न उदाहरण आपको इस सिंटैक्स का उपयोग करने के कई तरीके दिखाता है।
वैकल्पिक वाक्यविन्यास एक बहु-पंक्ति स्ट्रिंग के रूप में भी काम करता है।