আমি রুবি ডকুমেন্টেশন পড়া ছিল এবং এর মধ্যে পার্থক্য সঙ্গে গুলিয়ে ফেলা গিয়েছে 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/
tr
str
অক্ষরগুলির সাথে সম্পর্কিত অক্ষর দ্বারা from_str
প্রতিস্থাপিত একটি অনুলিপি প্রদান করে to_str
। এর to_str
চেয়ে কম from_str
হলে চিঠিপত্র বজায় রাখার জন্য এটি তার শেষ চরিত্রের সাথে প্যাড করা হয়।
http://apidock.com/ruby/String/tr
gsub
str
দ্বিতীয় আর্গুমেন্টের পরিবর্তে প্যাটার্নের সমস্ত উপস্থিতিগুলির একটি অনুলিপি প্রদান করে। প্যাটার্নটি সাধারণত একটি রেজিপ্সপ; যদি স্ট্রিং হিসাবে দেওয়া হয় তবে এতে থাকা যে কোনও নিয়মিত এক্সপ্রেশন মেটাচার্যাক্টারের অক্ষরে অক্ষরে ব্যাখ্যা করা \d
হবে , উদাহরণস্বরূপ d
একটি অঙ্কের পরিবর্তে একটি ব্যাকলেশ মিলবে ।
http://apidock.com/ruby/String/gsub