Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

अल्टीमेट रूबी स्ट्रिंग मेथड्स गाइड - टेक्स्ट मैनिपुलेशन में महारत

एक स्ट्रिंग वर्णों का एक क्रम है।

स्ट्रिंग्स ऑब्जेक्ट्स हैं इसलिए उनके पास बहुत सारे मेथड्स हैं जिनका उपयोग आप उनके साथ चीजें करने के लिए कर सकते हैं।

इस लेख में आप उदाहरणों के साथ सबसे उपयोगी रूबी स्ट्रिंग मेथड्स खोजेंगे!

विषयसूची

  • 1 स्ट्रिंग की लंबाई कैसे प्राप्त करें
  • 2 जांचें कि स्ट्रिंग खाली है या नहीं
  • 3 स्ट्रिंग इंटरपोलेशन क्या है?
  • 4 सबस्ट्रिंग कैसे निकालें
  • 5 जांचें कि एक स्ट्रिंग में दूसरी स्ट्रिंग है या नहीं
  • 6 रूबी स्ट्रिंग को पैड कैसे करें
  • 7 केस इग्नोर करके स्ट्रिंग्स की तुलना करें
  • 8 स्ट्रिंग को ट्रिम कैसे करें और व्हाइट स्पेस हटाएं
  • 9 स्ट्रिंग प्रीफिक्स और सफिक्स
  • 10 स्ट्रिंग को वर्णों की सरणी में बदलें
  • 11 सरणी को स्ट्रिंग में बदलें
  • 12 स्ट्रिंग को इंटीजर में बदलें
  • 13 जांचें कि स्ट्रिंग एक संख्या है या नहीं
  • 14 वर्णों को कैसे जोड़ें
  • 15 रूबी में स्ट्रिंग के वर्णों पर पुनरावृति करें
  • 16 रूबी में स्ट्रिंग को अपरकेस या लोअरकेस में बदलें
  • 17 मल्टीलाइन स्ट्रिंग्स कैसे बनाएं
  • 18 Gsub मेथड का उपयोग करके स्ट्रिंग के अंदर टेक्स्ट कैसे बदलें
  • 19 स्ट्रिंग से अंतिम वर्ण कैसे हटाएं
  • 20 स्ट्रिंग एन्कोडिंग कैसे बदलें
  • 21 वर्णों की गिनती
  • 22 सारांश
    • 22.1 संबंधित

स्ट्रिंग की लंबाई कैसे प्राप्त करें

आसान:

 "ruby".size # 4 

आप size के बजाय length का भी उपयोग कर सकते हैं, वे वही काम करते हैं।

जांचें कि स्ट्रिंग खाली है या नहीं

हम एक खाली स्ट्रिंग को शून्य लंबाई वाली स्ट्रिंग के रूप में परिभाषित करते हैं।

आप इस तरह जांच सकते हैं:

 "".size == 0 # true 

या इससे भी बेहतर, empty? मेथड का उपयोग करें।

उदाहरण:

 "".empty? # true 

एक ब्लैंक स्ट्रिंग वह स्ट्रिंग है जिसकी या तो शून्य-लंबाई होती है, या केवल व्हाइट स्पेस वर्णों से बनी होती है।

स्ट्रिंग इंटरपोलेशन क्या है?

स्ट्रिंग इंटरपोलेशन आपको स्ट्रिंग्स को एक साथ जोड़ने की अनुमति देता है:

 name = "Jesus" puts "Hello #{name}" 

कुछ लोग नहीं जानते कि आप इंटरपोलेशन के अंदर वास्तविक कोड रख सकते हैं।

यहाँ एक उदाहरण है:

 puts "The total is #{1+1}" # "the total is 2" 

रूबी स्ट्रिंग इंटरपोलेशन ब्लॉक पर to_s मेथड को कॉल करता है, यह ऑब्जेक्ट को खुद को स्ट्रिंग में बदलने के लिए कहता है।

सबस्ट्रिंग कैसे निकालें

एक सबस्ट्रिंग एक स्ट्रिंग का छोटा हिस्सा है, यह उपयोगी है यदि आप केवल उस विशिष्ट भाग को चाहते हैं, जैसे शुरुआत, मध्य, या अंत।

रूबी में सबस्ट्रिंग कैसे प्राप्त करें?

एक तरीका है एक प्रारंभिक इंडेक्स और वर्णों की संख्या का उपयोग करना, वर्गाकार कोष्ठक के अंदर, कॉमा से अलग करके।

इस तरह:

 string = "abc123" string[0,3] # "abc" string[3,3] # "123" 

पहली संख्या प्रारंभिक इंडेक्स है।

दूसरी संख्या है कि आप कितने वर्ण चाहते हैं।

यदि आप "अंतिम को छोड़कर सभी वर्ण प्राप्त करना" जैसा कुछ करना चाहते हैं तो आप एक रेंज का भी उपयोग कर सकते हैं।

उदाहरण:

 string = "abc123" string[0..-2] # "abc12" 

अब, पहला इंडेक्स अभी भी प्रारंभिक इंडेक्स है, लेकिन दूसरा इंडेक्स अंतिम इंडेक्स (सम्मिलित) है। यह -2 अंतिम से दूसरा वर्ण है, और -1 स्ट्रिंग का अंत है।

यदि आप सबस्ट्रिंग को हटाना या बदलना चाहते हैं।

आप यह कर सकते हैं:

 string[0..2] = "" p string # "123" 

बहुत बढ़िया!

जांचें कि एक स्ट्रिंग में दूसरी स्ट्रिंग है या नहीं

सबसे आसान तरीका क्या है यह पता लगाने का कि एक स्ट्रिंग दूसरी स्ट्रिंग में शामिल है?

include? मेथड:

 string = "Today is Saturday" string.include?("Saturday") # true 

आप index मेथड का भी उपयोग कर सकते हैं:

 string = "Today is Sunday" string.index("day") # 2 

यह मेथड आंशिक शब्दों की तलाश करता है और true या false लौटाने के बजाय वह इंडेक्स देता है जहां इस स्ट्रिंग की शुरुआत मिलती है।

इस उदाहरण में, index "Today" में "day" ढूंढ रहा है।

यदि आप पैटर्न ढूंढना चाहते हैं (जैसे "day" शब्द वाले सभी शब्द) तो आप रेगुलर एक्सप्रेशन ढूंढ रहे हैं।

रूबी स्ट्रिंग को पैड कैसे करें

एक स्ट्रिंग को पैड करने का एक तरीका दो आर्गुमेंट्स के साथ rjust मेथड का उपयोग करना है:

 binary_string = "1101" binary_string.rjust(8, "0") # "00001101" 

यदि आप दाईं ओर पैड करना चाहते हैं तो आप ljust का उपयोग कर सकते हैं:

 binary_string = "1111" binary_string.ljust(8, "0") # "11110000" 

केस इग्नोर करके स्ट्रिंग्स की तुलना करें

क्योंकि स्ट्रिंग तुलना केस-सेंसिटिव है, आप यह सुनिश्चित करना चाहते हैं कि आप जिन दो स्ट्रिंग्स की तुलना कर रहे हैं वे एक ही केस में हैं।

ऐसा करने का सामान्य तरीका समीकरण के दोनों पक्षों को downcase या upcase बनाना है।

उदाहरण:

 lang1 = "ruby" lang2 = "Ruby" lang1.upcase == lang2.upcase 

casecmp? मेथड भी है जो केस-इनसेंसिटिव तुलना करता है, लेकिन यह शायद ही कभी उपयोग किया जाता है।

ऊपर दिए गए उदाहरण पर टिके रहें।

स्ट्रिंग को ट्रिम कैसे करें और व्हाइट स्पेस हटाएं

किसी फाइल या वेबसाइट से डेटा पढ़ते समय आप अपने स्ट्रिंग में अतिरिक्त व्हाइट स्पेस पा सकते हैं।

आप strip मेथड का उपयोग करके उस अतिरिक्त स्पेस को हटा सकते हैं:

 extra_space = " test " extra_space.strip # "test" 

यदि आप केवल एक तरफ (बाएं / दाएं) से व्हाइट स्पेस हटाना चाहते हैं तो आप lstrip और rstrip मेथड्स का उपयोग कर सकते हैं।

स्ट्रिंग प्रीफिक्स और सफिक्स

आप start_with? मेथड का उपयोग करके जांच सकते हैं कि कोई स्ट्रिंग किसी विशिष्ट प्रीफिक्स से शुरू होती है या नहीं।

यहाँ एक उदाहरण है:

 string = "ruby programming" string.start_with? "ruby" # true 

end_with? मेथड भी है:

 string = "ruby programming" string.end_with? "programming" # true 

इसके अलावा, रूबी 2.5 ने delete_prefix और delete_suffix मेथड्स पेश किए, जो आपके लिए उपयोगी हो सकते हैं।

यहाँ एक उदाहरण है:

 string = "bacon is expensive" string.delete_suffix(" is expensive") # "bacon" 

स्ट्रिंग को वर्णों की सरणी में बदलें

एक स्ट्रिंग लेना और इसे वर्णों की सरणी में तोड़ना split मेथड के साथ आसान है।

उदाहरण:

 string = "a b c d" string.split # ["a", "b", "c", "d"] 

डिफ़ॉल्ट रूप से split स्पेस को सेपरेटर वर्ण के रूप में उपयोग करेगा, लेकिन आप इस मेथड में एक आर्गुमेंट पास करके एक अलग सेपरेटर निर्दिष्ट कर सकते हैं।

यहाँ बताया गया है कि आप कॉमा-सेपरेटेड वैल्यूज़ (CSV) की सूची को कैसे विभाजित कर सकते हैं:

 csv = "a,b,c,d" string.split(",") # ["a", "b", "c", "d"] 

लेकिन यदि आप विशेष रूप से CSV डेटा के साथ काम कर रहे हैं तो आप मानक पुस्तकालय से CSV क्लास का उपयोग करने पर विचार कर सकते हैं। यह क्लास कॉलम हेडर्स पढ़ने जैसे काम कर सकती है, इसलिए यह आपके लिए चीजों को आसान बनाती है।

सरणी को स्ट्रिंग में बदलें

यदि आप स्ट्रिंग्स की एक सरणी लेना चाहते हैं और इन स्ट्रिंग्स को एक बड़ी स्ट्रिंग में जोड़ना चाहते हैं तो आप join मेथड का उपयोग कर सकते हैं।

उदाहरण:

 arr = ['a', 'b', 'c'] arr.join # "abc" 

join में एक आर्गुमेंट पास करना भी संभव है, यह आर्गुमेंट वर्ण सेपरेटर है।

उदाहरण:

 arr = ['a', 'b', 'c'] arr.join("-") # "a-b-c" 

स्ट्रिंग को इंटीजर में बदलें

यदि आप "49" जैसी स्ट्रिंग को इंटीजर 49 में बदलना चाहते हैं तो आप to_i मेथड का उपयोग कर सकते हैं।

उदाहरण:

 "49".to_i 

ध्यान दें कि यदि आप इसे बिना नंबर वाली स्ट्रिंग के साथ आज़माते हैं तो आपको 0 मिलेगा।

उदाहरण:

 "a".to_i # 0 

जांचें कि स्ट्रिंग एक संख्या है या नहीं

क्या आप जानना चाहेंगे कि कोई स्ट्रिंग केवल पूर्णांकों से बनी है?

आप यह कर सकते हैं:

 "123".match?(/\A-?\d+\Z/) # true "123bb".match?(/\A-?\d+\Z/) # false 

नोट: match? मेथड रूबी 2.4 में पेश किया गया था, आप पुराने संस्करणों पर match (बिना प्रश्न चिह्न के) का उपयोग कर सकते हैं।

यह कोड एक रेगुलर एक्सप्रेशन का उपयोग करता है, मैं आपके लिए इसका अनुवाद करता हूँ:

"स्ट्रिंग की शुरुआत से (\A) जांचें कि क्या एक वैकल्पिक डैश है (-?, नकारात्मक संख्याओं के लिए), फिर सुनिश्चित करें कि वहां कुछ संख्याएं हैं (\d+) और स्ट्रिंग के अंत तक (\Z) कुछ और नहीं है।"

वर्णों को कैसे जोड़ें

आप छोटी स्ट्रिंग्स से बड़ी स्ट्रिंग बना सकते हैं वर्णों को मौजूदा स्ट्रिंग में जोड़कर। इसे हम स्ट्रिंग कंकेटनेशन भी कहते हैं।

यहाँ बताया गया है कि << मेथड का उपयोग करके ऐसा कैसे करें:

 string = "" string << "hello" string << " " string << "there" # "hello there" 

स्ट्रिंग कंकेटनेशन के लिए += का उपयोग न करें क्योंकि यह हर बार एक नई स्ट्रिंग बनाएगा, जो प्रदर्शन के लिए अच्छा नहीं है!

रूबी में स्ट्रिंग के वर्णों पर पुनरावृति करें

कभी-कभी स्ट्रिंग के व्यक्तिगत वर्णों के साथ काम करना उपयोगी होता है।

ऐसा करने का एक तरीका each_char मेथड का उपयोग करना है:

 "rubyguides".each_char { |ch| puts ch } 

आप स्ट्रिंग को वर्णों की सरणी में बदलने के लिए chars मेथड का भी उपयोग कर सकते हैं। फिर आप इस सरणी पर पुनरावृति करने के लिए each का उपयोग कर सकते हैं।

उदाहरण:

 array_of_characters = "rubyguides".chars # ["r", "u", "b", "y", "g", "u", "i", "d", "e", "s"] 

रूबी में स्ट्रिंग को अपरकेस या लोअरकेस में कैसे बदलें

यदि आप किसी स्ट्रिंग को सभी अपर केस में बदलना चाहते हैं तो आप upcase मेथड का उपयोग कर सकते हैं।

उदाहरण:

 "abcd".upcase # "ABCD" 

और यदि आप लोअर केस में बदलना चाहते हैं तो आप downcase मेथड का उपयोग कर सकते हैं।

उदाहरण:

 "ABCD".downcase # "abcd" 

मल्टीलाइन स्ट्रिंग्स कैसे बनाएं

आप दो अलग-अलग तरीकों से मल्टी-लाइन स्ट्रिंग्स बना सकते हैं।

एक है हियरडॉक्स (heredocs) का उपयोग करके:

 b = <<-STRING aaa bbb ccc STRING 

और दूसरा है %Q का उपयोग करके:

 a = %Q(aaa bbb ccc ) 

Gsub मेथड का उपयोग करके स्ट्रिंग के अंदर टेक्स्ट कैसे बदलें

यदि आप किसी स्ट्रिंग के अंदर टेक्स्ट बदलना चाहते हैं तो gsub मेथड का उपयोग करें।

आइए "dogs" शब्द को "cats" से बदलें:

 string = "We have many dogs" string.gsub("dogs", "cats") # "We have many cats" 

यदि आप स्ट्रिंग को हटाना चाहते हैं तो दूसरे आर्गुमेंट के रूप में खाली स्ट्रिंग का उपयोग करें।

उदाहरण:

 string = "abccc" string.gsub("c", "") # "ab" 

अब:

gsub मेथड एक नई स्ट्रिंग लौटाता है।

यदि आप मूल स्ट्रिंग पर परिवर्तन लागू करना चाहते हैं तो आप gsub! मेथड का उपयोग कर सकते हैं।

gsub मेथड एक आर्गुमेंट के रूप में रेगुलर एक्सप्रेशन भी लेता है ताकि आप सटीक शब्दों के बजाय पैटर्न बदल सकें।

यहाँ एक उदाहरण है:

 string = "We have 3 cats" string.gsub(/\d+/, "5") # "We have 5 cats" 

यह स्ट्रिंग में सभी नंबरों (\d+) को नंबर 5 से बदल देता है।

इस मेथड का उपयोग करने का एक और तरीका, ब्लॉक के साथ:

 title = "the lord of the rings" title.gsub(/\w+/) { |word| word.capitalize } # "The Lord Of The Rings" 

gsub बनाम sub के बारे में क्या?

खैर, sub gsub जैसा ही है, लेकिन यह केवल पहले मैच को बदलेगा।

Gsub सभी मैचों को बदलता है।

स्ट्रिंग से अंतिम वर्ण कैसे हटाएं

यदि आप उपयोगकर्ता से कुछ इनपुट मांग रहे हैं (Kernel#gets मेथड का उपयोग करके) तो आपकी स्ट्रिंग के अंत में एक न्यूलाइन वर्ण (\n) होगा, यह आपको स्ट्रिंग की सीधे तुलना करने से रोकता है।

उदाहरण:

 puts "What's your name?" name = gets # कुछ टाइप करें... 

उस अतिरिक्त न्यूलाइन वर्ण (\n) को हटाने का सबसे अच्छा तरीका chomp मेथड का उपयोग करना है।

उदाहरण:

 name = gets.chomp 

रूबी 2.3 से chomp मेथड एक वैकल्पिक आर्गुमेंट लेता है जो आपको उन वर्णों को हटाने की अनुमति देता है जिन्हें आप हटाना चाहते हैं।

उदाहरण:

 "abcd?".chomp("?") # "abcd" 

और यदि वर्ण वहां नहीं है तो यह मूल स्ट्रिंग लौटाएगा।

स्ट्रिंग एन्कोडिंग कैसे बदलें

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

उदाहरण के लिए, ASCII एन्कोडिंग में संख्या 65 अक्षर "A" को दर्शाता है।

लेकिन अधिक जटिल एन्कोडिंग भी हैं, जैसे UTF-8, जो आपको विभिन्न भाषाओं (चीनी, आदि) के वर्णों और यहां तक कि इमोजी को दर्शाने की अनुमति देते हैं।

किसी स्ट्रिंग के लिए वर्तमान एन्कोडिंग जानने के लिए आप encoding मेथड का उपयोग कर सकते हैं।

 "abc".encoding # Encoding:UTF-8 

डिस्क से फ़ाइल पढ़ते समय या वेबसाइट से कुछ डेटा डाउनलोड करते समय आप एन्कोडिंग समस्याओं में पड़ सकते हैं।

आप अक्सर encoding को लागू करके उस समस्या को ठीक कर सकते हैं।

इस तरह:

 "abc".force_encoding("UTF-8") 

वर्णों की गिनती

आप count मेथड का उपयोग करके गिन सकते हैं कि कोई वर्ण स्ट्रिंग में कितनी बार आता है।

उदाहरण:

 str = "aaab" str.count("a") # 3 str.count("b") # 1 

सारांश

आपने कई स्ट्रिंग मेथड्स के बारे में सीखा, जैसे सरणियों में स्ट्रिंग्स को तोड़ने के लिए join और split, स्ट्रिंग्स के अंदर टेक्स्ट बदलने के लिए gsub और अतिरिक्त व्हाइट स्पेस को ट्रिम करने के लिए strip।

चूंकि आप इस पेज को बाद में संदर्भित करना चाह सकते हैं, इसलिए इसे बुकमार्क करना सुनिश्चित करें और इसे अपने सभी रूबी दोस्तों के साथ शेयर करें 🙂

पढ़ने के लिए धन्यवाद!

  1. कीबोर्ड के लिए अंतिम गाइड: खरीदने से पहले जानने योग्य बातें कीबोर्ड के लिए अंतिम गाइड: खरीदने से पहले जानने योग्य बातें

    कीबोर्ड सबसे अधिक उपयोग किए जाने वाले कंप्यूटर पेरिफेरल में से एक है। यदि आप कीबोर्ड खरीदने के बारे में सोच रहे हैं, तो किसी एक पर निर्णय लेने से पहले कुछ महत्वपूर्ण विशेषताओं पर ध्यान देना चाहिए, खासकर यदि वे इसे कई उपकरणों के बीच ले जाना चाहते हैं। 2022 के 9 सर्वश्रेष्ठ कीबोर्ड कीबोर्ड खरीदने मे

  1. रूबी में फंक्शनल प्रोग्रामिंग में महारत: एक पूर्ण गाइड रूबी में फंक्शनल प्रोग्रामिंग में महारत: एक पूर्ण गाइड

    शायद आपने अभी फंक्शनल प्रोग्रामिंग के बारे में सुना है और आपके कुछ सवाल हैं। जैसे… फंक्शनल प्रोग्रामिंग वास्तव में क्या है? यह ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग से कैसे तुलना करता है? क्या आपको रूबी में फंक्शनल प्रोग्रामिंग का उपयोग करना चाहिए? मैं इन सवालों का जवाब दूंगा ताकि आप बेहतर ढंग से समझ सके

  1. रूबी स्ट्रिंग फॉर्मेटिंग आसान: लीडिंग जीरोज, कॉलम और printf स्टाइल रूबी स्ट्रिंग फॉर्मेटिंग आसान: लीडिंग जीरोज, कॉलम और printf स्टाइल

    आइए बात करते हैं कि आप रूबी में स्ट्रिंग्स को कैसे फॉर्मेट कर सकते हैं। आप स्ट्रिंग को फॉर्मेट क्यों करना चाहेंगे? खैर, आप ऐसी चीजें करना चाह सकते हैं जैसे नंबर 10 से कम होने पर भी लीडिंग ज़ीरो हो (उदाहरण: 01, 02, 03...), या कुछ कंसोल आउटपुट को कॉलम में अच्छी तरह से फॉर्मेट किया गया हो। अन्य भाषाओं