আমার রুবিতে একটি স্ট্রিং রয়েছে:
sentence = "My name is Robert"
জটিল কোড বা লুপ ব্যবহার না করে এই বাক্যটিতে যে কোনও একটি শব্দ সহজেই প্রতিস্থাপন করতে পারি?
আমার রুবিতে একটি স্ট্রিং রয়েছে:
sentence = "My name is Robert"
জটিল কোড বা লুপ ব্যবহার না করে এই বাক্যটিতে যে কোনও একটি শব্দ সহজেই প্রতিস্থাপন করতে পারি?
উত্তর:
sentence.sub! 'Robert', 'Joe'
প্রতিস্থাপিত শব্দটি বাক্যে না থাকলে ব্যতিক্রম ঘটায় না ( []=
ভেরিয়েন্ট উইল)।
উপরেরগুলি কেবল "রবার্ট" এর প্রথম উদাহরণটি প্রতিস্থাপন করে।
সমস্ত দৃষ্টান্ত প্রতিস্থাপন করতে gsub
/ gsub!
(অর্থাত্ "গ্লোবাল প্রতিস্থাপন") ব্যবহার করুন:
sentence.gsub! 'Robert', 'Joe'
উপরেরটি রবার্টের সমস্ত দৃষ্টান্ত জো দিয়ে প্রতিস্থাপন করবে।
যদি আপনি প্রাকৃতিক ভাষার পাঠ্য নিয়ে কাজ করে থাকেন এবং কোনও স্ট্রিংয়ের অংশ নয়, একটি শব্দ প্রতিস্থাপনের প্রয়োজন হয় তবে আপনাকে আপনার জিএসউবে একটি চিমটি নিয়মিত ভাব যোগ করতে হবে কারণ একটি সরল পাঠ্য প্রতিস্থাপনের কারণে বিপর্যয়কর ফলাফল হতে পারে:
'mislocated cat, vindicating'.gsub('cat', 'dog')
=> "mislodoged dog, vindidoging"
নিয়মিত প্রকাশের শব্দের সীমা থাকে যেমন \b
কোনও শব্দের শুরু বা শেষের সাথে ম্যাচ হয়। সুতরাং,
'mislocated cat, vindicating'.gsub(/\bcat\b/, 'dog')
=> "mislocated dog, vindicating"
জাবি স্ক্রিপ্টের মতো অন্য কয়েকটি ভাষার মতো রুবিতে শব্দের সীমাগুলি ইউটিএফ -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
) প্রতিস্থাপন করুন ?