मैं रूबी प्रलेखन पढ़ रहा था और बीच का अंतर के साथ भ्रमित हो गया gsubऔर tr। दोनों के बीच क्या अंतर है?
मैं रूबी प्रलेखन पढ़ रहा था और बीच का अंतर के साथ भ्रमित हो गया gsubऔर tr। दोनों के बीच क्या अंतर है?
जवाबों:
trजब आप एकल वर्णों को बदलना (अनुवाद करना) करना चाहते हैं तो उपयोग करें ।
trएकल वर्णों पर मेल खाता है (नियमित अभिव्यक्ति के माध्यम से नहीं), इसलिए वर्णों को पहले स्ट्रिंग तर्क में एक ही क्रम में होने की आवश्यकता नहीं है। जब कोई वर्ण पाया जाता है, तो उसे उस वर्ण के साथ बदल दिया जाता है, जो दूसरे स्ट्रिंग तर्क में एक ही सूचकांक में पाया जाता है:
'abcde'.tr('bda', '123')
#=> "31c2e"
'abcde'.tr('bcd', '123')
#=> "a123e"
का प्रयोग करें gsubजब आप रेगुलर एक्सप्रेशन का उपयोग करने की जरूरत है या आप लंबे समय तक सबस्ट्रिंग बदलना चाहते हैं जब:
'abcde'.gsub(/bda/, '123')
#=> "abcde"
'abcde'.gsub(/b.d/, '123')
#=> "a123e"
trअर्थ "अनुवाद" है, जैसा कि "अनुवाद वर्ण" में है, जो वास्तव में यही करता है। यह उसी नाम की यूनिक्स उपयोगिता के नाम पर रखा गया है (जो अपने अस्पष्ट और छोटे नामों के लिए जाना जाता है)।
trकिसी एकल वर्ण को केवल एकल निश्चित वर्ण से बदल सकता है (हालाँकि आप इस प्रकार के कई मेल एक ही trकॉल में डाल सकते हैं) लेकिन तेज़ है।gsubरेगेक्स का उपयोग करके जटिल पैटर्न से मिलान कर सकते हैं, और एक जटिल संगणना परिणाम के साथ बदल सकते हैं, लेकिन की तुलना में धीमी है tr।trकी तुलना में कई गुना तेज है gsub। यहाँ एक बेंचमार्क है कि कितनी तेजी से trहो सकता है gsub। github.com/JuanitoFatas/fast-ruby/blob/master/code/string/…
trstrवर्णों के साथ की एक प्रति लौटाता है जिसमें संबंधित वर्णों को from_strप्रतिस्थापित किया जाता है to_str। यदि इससे to_strकम है from_str, तो पत्राचार बनाए रखने के लिए इसे अपने अंतिम चरित्र के साथ जोड़ा जाता है।
http://apidock.com/ruby/String/tr
gsubstrदूसरे तर्क के लिए प्रतिस्थापित पैटर्न की सभी घटनाओं के साथ एक प्रति लौटाता है । पैटर्न आमतौर पर एक Regexp है; यदि स्ट्रिंग के रूप में दिया जाता है, तो इसमें शामिल किसी भी नियमित अभिव्यक्ति मेटाचैकर की शाब्दिक रूप से व्याख्या की \dजाएगी , उदाहरण dके लिए एक अंक के बजाय एक बैकलैश का मिलान होगा ।
http://apidock.com/ruby/String/gsub