स्ट्रिंग्स. अवलोकन
एक स्ट्रिंग एक विशेष क्रम में वर्णों की एक सूची (या अनुक्रम) है। वर्णों के संपूर्ण अनुक्रम को एक इकाई के रूप में माना जाता है।
एक वर्ण कुछ भी है जिसे आप कीबोर्ड पर एक कीस्ट्रोक (अक्षर, संख्या, बैकस्लैश, या कुछ अन्य वर्ण) के साथ टाइप कर सकते हैं।
स्ट्रिंग्स में रिक्त स्थान हो सकते हैं: "हैलो वर्ल्ड!"।
एक खाली स्ट्रिंग एक ऐसी स्ट्रिंग होती है जिसमें 0 अक्षर होते हैं।
पास्कल एपोस्ट्रोफिस ( ' ' ) में लिखी गई हर चीज को स्ट्रिंग्स के रूप में पहचानता है।
Pascal में एक string string प्रकार की होती है।
आप इनपुट स्टेटमेंट का उपयोग करके स्ट्रिंग में एक नया मान लिख सकते हैं
<पूर्व>
पढ़ें;
आप वेरिएबल को बस एक स्ट्रिंग मान भी निर्दिष्ट कर सकते हैं, जैसे कि
<पूर्व>
एस := 'पायथन';
आप अंतर्निहित फ़ंक्शन <कोड>लंबाईकोड> का उपयोग करके स्ट्रिंग की लंबाई निर्धारित कर सकते हैं
<पूर्व>
n := लंबाई
स्ट्रिंग तुलना
स्ट्रिंग्स की तुलना संख्याओं की तरह ही एक दूसरे से की जा सकती है। आप यह निर्धारित कर सकते हैं कि कौन सी रेखा अधिक है, कौन सी कम है।
स्ट्रिंग्स की तुलना करते समय, वर्ण कोड की तुलना की जाती है। वर्ण एन्कोडिंग के दर्जनों, यदि सैकड़ों नहीं हैं। इस अवधारणा को समझने का सबसे आसान तरीका सबसे आसान ASCII में से एक को समझना है ( यहां पढ़ें)।
यह समझना आवश्यक है कि आधुनिक एनकोडिंग में रूसी और अंग्रेजी दोनों अक्षरों को वर्णानुक्रम में व्यवस्थित किया जाता है, संख्याएं भी छोटे से बड़े की ओर जाती हैं।
उदाहरण के लिए, ASCII कोड तालिका में, अंग्रेजी अक्षर 'A' - 65, अक्षर 'क' - 97, अंक '0' कोड 48 है। रूसी अक्षर ASCII कोड तालिका (128 से 255 तक की संख्या) के विस्तारित भाग में स्थित हैं। बड़े अक्षर छोटे अक्षरों से पहले आते हैं (अर्थात उनका कोड छोटा होता है)।
उपयोग की जाने वाली अधिकांश एन्कोडिंग तालिकाओं में, पैटर्न समान होते हैं, लोअरकेस अक्षर अपरकेस अक्षरों की तुलना में बाद में होते हैं, संख्याएँ अक्षरों की तुलना में पहले होती हैं, और रूसी अक्षर अंग्रेज़ी की तुलना में बाद में होते हैं।
उदाहरण के लिए: "लोकोमोटिव" < "स्टीमबोट", क्योंकि शब्द पांचवें अक्षर और "इन" में भिन्न हैं < "एक्स".
|
दुर्भाग्य से, पास्कल में कोई फ़ंक्शन नहीं है जो एक ही पंक्ति से कई स्थान-पृथक लाइनों को पढ़ने की अनुमति देगा। ऐसा करने के लिए, आपको अपना स्वयं का कार्य लिखना होगा:
<पूर्व>
संस्करण, डब्ल्यू: स्ट्रिंग;
मैं, जम्मू, इंडस्ट्रीज़: पूर्णांक;
ए: स्ट्रिंग की सरणी;
शुरू
रीड्लन (ओं);
सेटलेंथ (ए, लंबाई (ओं));
मैं := 1;
इंडस्ट्रीज़: = 0;
जबकि मैं < लंबाई (ओं) करते हैं
शुरू
जबकि (i < लंबाई(s)) और ('' + s[i] = ' ') do i += 1;
जे : = मैं + 1;
डब्ल्यू := '' + एस [मैं];
जबकि (j < लंबाई(s)) और ('' +s[j] <> ' ') शुरू करते हैं
डब्ल्यू + = एस [जे];
जे + = 1;
अंत;
ए [इंड] : = डब्ल्यू;
इंडस्ट्रीज़ + = 1;
मैं := जे;
अंत;
लिखें (एक [0], एक [1]);
अंत।
पूर्व>
परिणामस्वरूप, हमें स्ट्रिंग्स की एक सरणी मिलती है।
|
स्ट्रिंग्स को "+" चिह्न का उपयोग करके एक साथ जोड़ा जा सकता है। इस ऑपरेशन को स्ट्रिंग संयोजन या संयोजन कहा जाता है।
उदाहरण के लिए,
<पूर्व>
एस := 'हाय, ';
s1 := 'दुनिया';
राइटलन(एस + एस1);
स्क्रीन "हैलो वर्ल्ड" (बिना उद्धरण)।
|
पंक्ति सूचकांकों को संदर्भित करना
एक स्ट्रिंग के प्रत्येक वर्ण की अपनी संख्या होती है (जिसे इंडेक्स कहा जाता है), और प्रोग्रामिंग भाषा पास्कल में इंडेक्सिंग एक से शुरू होती है। यानी, पहले वर्ण में अनुक्रमणिका 1 है, दूसरे वर्ण में अनुक्रमणिका 2 है, और इसी प्रकार आगे भी।
स्ट्रिंग वर्णों को अनुक्रमणिकाओं द्वारा एक्सेस किया जा सकता है, जो वर्ग कोष्ठक s[i] में दर्शाए गए हैं।
उदाहरण
<टेबल क्लास = "टेबल-बॉर्डर्ड टेबल-लिस्ट-टेस्ट टेबल-एसएम टेबल-स्ट्राइप्ड">
<शरीर>
स्ट्रिंग एस |
एच |
ई |
l |
l |
ओ |
इंडेक्स |
S[1] |
S[2] |
S[3] |
S[4] |
S[5] |
टेबल>
पी.एस. PascalABC.NET में कई स्ट्रिंग विधियाँ मानती हैं कि स्ट्रिंग्स को शून्य से अनुक्रमित किया जाता है। हम स्ट्रिंग विधियों का उपयोग नहीं करेंगे जो फिलहाल शून्य-आधारित इंडेक्स के साथ काम करते हैं। इनके लिए बाहरी कार्यों के साथ समतुल्य प्रतिस्थापन हैं जो मानते हैं कि पंक्तियों को 1 से अनुक्रमित किया गया है।
|
चूँकि किसी वर्ण को अनुक्रमणिका द्वारा एक्सेस किया जा सकता है, आप सभी वर्णों पर पुनरावृति करने के लिए एक चर लूप का उपयोग कर सकते हैं, जो संभावित सूचकांक मान लेगा। उदाहरण के लिए, एक प्रोग्राम जो स्ट्रिंग एस के सभी वर्ण कोड प्रदर्शित करता है वह इस तरह दिखेगा
<पूर्व>
for i := 1 to length(s) करते हैं
राइटलन (एस [i], ऑर्ड (एस [i]))
पूर्व>
कार्यक्रम के लिए स्पष्टीकरण:
1) <कोड> लंबाई कोड> फ़ंक्शन एक स्ट्रिंग की लंबाई पाता है। पहले वर्ण की अनुक्रमणिका 1 है और अंतिम की अनुक्रमणिका लंबाई है। लूप वेरिएबल i केवल 1 से लंबाई तक मान लेगा।
2) प्रत्येक पंक्ति में, प्रतीक स्वयं पहले प्रदर्शित होगा, और उसके बाद उसका कोड, जो अंतर्निहित फ़ंक्शन ord() द्वारा वापस किया जाता है
उसी गणना को छोटा लिखा जा सकता है:
<पूर्व>
सी इन एस के लिए
राइटलन (सी, ऑर्ड (सी));
पूर्व>
इस फ़्रैगमेंट में, लूप हेडर सभी वर्णों के बीच से गुजरता है, उन्हें बदले में वेरिएबल c में रखता है।
तार के साथ काम करते समय पास्कल की ख़ासियत यह है कि तार परिवर्तनशील वस्तुएँ हैं। दूसरे शब्दों में, हम एक स्ट्रिंग के अलग-अलग वर्णों को बदल सकते हैं।
उदाहरण के लिए, निम्न कथन काम करेगा
<पूर्व>
s[5] := 'a';
आप आवश्यक परिवर्तनों के साथ वर्णों से एक नई स्ट्रिंग भी बना सकते हैं।
उदाहरण के लिए, एक प्रोग्राम जो 'a' अक्षरों के लिए 'बी' इस तरह दिखेगा:
<पूर्व>
पढ़ें (ओं);
i := 1 से लंबाई के लिए शुरू करते हैं
अगर s[i] = 'a'तो s[i] := 'b';
अंत;
लेख;
इस उदाहरण में, हम स्ट्रिंग s के सभी वर्णों के माध्यम से लूप करते हैं। लूप की बॉडी में, हम वेरिएबल s[i] के मान की जांच करते हैं: यदि कैरेक्टर 'a' से मेल खाता है, तो हम इसे 'b' से बदल देते हैं। />
|