मुझे रूबी में एक स्ट्रिंग है:
sentence = "My name is Robert"
मैं जटिल कोड या लूप का उपयोग किए बिना इस वाक्य में किसी भी एक शब्द को आसानी से कैसे बदल सकता हूं?
मुझे रूबी में एक स्ट्रिंग है:
sentence = "My name is Robert"
मैं जटिल कोड या लूप का उपयोग किए बिना इस वाक्य में किसी भी एक शब्द को आसानी से कैसे बदल सकता हूं?
जवाबों:
sentence.sub! 'Robert', 'Joe'
यदि अपवाद शब्द वाक्य में नहीं है तो कोई अपवाद नहीं []=
होगा ( वैरिएंट)।
उपरोक्त "रॉबर्ट" का केवल पहला उदाहरण है।
सभी उदाहरणों का उपयोग करने के लिए gsub
/ gsub!
(यानी "वैश्विक प्रतिस्थापन"):
sentence.gsub! 'Robert', 'Joe'
उपरोक्त जोए के साथ रॉबर्ट के सभी उदाहरणों को प्रतिस्थापित करेगा।
यदि आप प्राकृतिक भाषा पाठ के साथ काम कर रहे हैं और एक शब्द को बदलने की जरूरत है, न कि केवल एक स्ट्रिंग का हिस्सा, तो आपको अपने gsub में एक नियमित पाठ के भावों को जोड़ना होगा क्योंकि एक सादे पाठ प्रतिस्थापन से विनाशकारी परिणाम हो सकते हैं:
'mislocated cat, vindicating'.gsub('cat', 'dog')
=> "mislodoged dog, vindidoging"
नियमित अभिव्यक्तियों में शब्द सीमाएँ होती हैं, जैसे कि \b
किसी शब्द की शुरुआत या अंत। इस प्रकार,
'mislocated cat, vindicating'.gsub(/\bcat\b/, 'dog')
=> "mislocated dog, vindicating"
रूबी में, जावास्क्रिप्ट जैसी कुछ अन्य भाषाओं के विपरीत, शब्द सीमाएँ UTF-8-संगत हैं, इसलिए आप इसे गैर-लैटिन या विस्तारित लैटिन अक्षरों के साथ भाषाओं के लिए उपयोग कर सकते हैं:
'сіль у кисіль, для весіль'.gsub(/\bсіль\b/, 'цукор')
=> "цукор у кисіль, для весіль"
\b
नहीं करती हैं , इसलिए उन में काम नहीं करता है, आपको उन मामलों में रूपात्मक विश्लेषक या सामान का उपयोग करने की आवश्यकता होगी। इसके अलावा, प्रफुल्लित करने वाला उदाहरण के लिए +1।
आप इस तरह से कोशिश कर सकते हैं:
sentence ["Robert"] = "Roger"
फिर वाक्य बन जाएगा:
sentence = "My name is Roger" # Robert is replaced with Roger
IndexError
। अन्यथा एक शब्द के लिए वाक्य का हिस्सा नहीं होगा:string not matched (IndexError)
my
) बदलें ?