টিআর এবং জিএসব মধ্যে পার্থক্য কি?


133

আমি রুবি ডকুমেন্টেশন পড়া ছিল এবং এর মধ্যে পার্থক্য সঙ্গে গুলিয়ে ফেলা গিয়েছে gsubএবং tr। এই দুটির মধ্যে পার্থক্য কী?


8
আমি এই প্রশ্নটি পেয়েছি কারণ রুবকপ আমার জিএসব ব্যবহার সম্পর্কে সতর্ক করেছে - আমি মনে করি নীচের উত্তরগুলি উত্তরটি ভালভাবে ব্যাখ্যা করেছে, যা মূলত জিএসব এবং টিআর এর মধ্যে পার্থক্য what's
JohnK

উত্তর:


180

trআপনি যখন একক অক্ষর প্রতিস্থাপন (অনুবাদ) করতে চান তখন ব্যবহার করুন ।

trএকক অক্ষরগুলিতে মেলে (কোনও নিয়মিত অভিব্যক্তির মাধ্যমে নয়), সুতরাং অক্ষরগুলি প্রথম স্ট্রিং আর্গুমেন্টে একই ক্রমে হওয়ার দরকার নেই। একটি অক্ষর সন্ধান করা হলে, এটি দ্বিতীয় স্ট্রিং আর্গুমেন্টে একই সূচীতে পাওয়া যায় এমন অক্ষরের সাথে প্রতিস্থাপন করা হয়:

'abcde'.tr('bda', '123')
#=> "31c2e"

'abcde'.tr('bcd', '123')
#=> "a123e"

আপনার gsubযখন একটি নিয়মিত এক্সপ্রেশন ব্যবহার করতে হবে বা আপনি আর দীর্ঘ সাবস্ট্রিংগুলি প্রতিস্থাপন করতে চান তখন ব্যবহার করুন:

'abcde'.gsub(/bda/, '123')
#=> "abcde"

'abcde'.gsub(/b.d/, '123')
#=> "a123e"

48
প্রসঙ্গের বিট: নামের trঅর্থ "অনুবাদ", যেমন "অনুবাদিত অক্ষরগুলি", যা ঠিক এটি করে। এটি একই নামের ইউনিক্স ইউটিলিটির নামানুসারে নামকরণ করা হয়েছে (যা তাদের অস্পষ্ট এবং সংক্ষিপ্ত নামগুলির জন্য সুপরিচিত)।
মার্টিন টর্নোইজ

40
  • trকেবলমাত্র একটি একক অক্ষরকে একটি একক স্থির চরিত্রের সাথে প্রতিস্থাপন করতে পারে (যদিও আপনি এই ধরণের একাধিক মিল একক trকলে রাখতে পারেন) তবে দ্রুত।
  • gsubরেজেক্স ব্যবহার করে জটিল নিদর্শনগুলি মেলাতে পারে এবং একটি জটিল গণনার ফলাফলের সাথে প্রতিস্থাপন করতে পারে তবে এর চেয়ে ধীর tr

9
সেটা ঠিক. উভয় কাজ যখন trকয়েকগুণ দ্রুত হয় gsub। এর trচেয়ে দ্রুত কতটা হতে পারে তার একটি মানদণ্ড এখানে gsubgithub.com/
জুয়ানিটো

9

trstrঅক্ষরগুলির সাথে সম্পর্কিত অক্ষর দ্বারা from_strপ্রতিস্থাপিত একটি অনুলিপি প্রদান করে to_str। এর to_strচেয়ে কম from_strহলে চিঠিপত্র বজায় রাখার জন্য এটি তার শেষ চরিত্রের সাথে প্যাড করা হয়। http://apidock.com/ruby/String/tr

gsubstrদ্বিতীয় আর্গুমেন্টের পরিবর্তে প্যাটার্নের সমস্ত উপস্থিতিগুলির একটি অনুলিপি প্রদান করে। প্যাটার্নটি সাধারণত একটি রেজিপ্সপ; যদি স্ট্রিং হিসাবে দেওয়া হয় তবে এতে থাকা যে কোনও নিয়মিত এক্সপ্রেশন মেটাচার্যাক্টারের অক্ষরে অক্ষরে ব্যাখ্যা করা \dহবে , উদাহরণস্বরূপ dএকটি অঙ্কের পরিবর্তে একটি ব্যাকলেশ মিলবে । http://apidock.com/ruby/String/gsub

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.