রুবিতে একটি ফাইল নামের এক্সটেনশনটি সন্ধান করুন


103

আমি একটি রেল অ্যাপসের ফাইল আপলোড অংশে কাজ করছি working অ্যাপ্লিকেশন দ্বারা বিভিন্ন ধরণের ফাইল আলাদাভাবে পরিচালনা করা হয়।

আপলোডকৃত ফাইলগুলি কোথায় যেতে হবে তা পরীক্ষা করতে আমি কিছু ফাইল এক্সটেনশনের একটি শ্বেতলিস্ট তৈরি করতে চাই। সমস্ত ফাইলের নাম স্ট্রিং।

ফাইল নেম স্ট্রিংয়ের কেবলমাত্র এক্সটেনশান অংশটি পরীক্ষা করার জন্য আমার একটি উপায় দরকার। ফাইলের নামগুলি সমস্ত "কিছু_ফিল_নাম.সোম_ এক্সটেনশন" ফর্ম্যাটে রয়েছে।

উত্তর:


167

এটি সত্যিই প্রাথমিক জিনিস:

irb(main):002:0> accepted_formats = [".txt", ".pdf"]
=> [".txt", ".pdf"]
irb(main):003:0> File.extname("example.pdf") # get the extension
=> ".pdf"
irb(main):004:0> accepted_formats.include? File.extname("example.pdf")
=> true
irb(main):005:0> accepted_formats.include? File.extname("example.txt")
=> true
irb(main):006:0> accepted_formats.include? File.extname("example.png")
=> false

4
কীভাবে "file_with_no_extension".split('.').last?
এআর

12
এটি দুর্ভাগ্যজনক যে এটি বহু-কালিক প্রত্যয় যেমন tar.gz,, এর জন্য কাজ করে না tar.bz2
কমডোডেভ

2
@ কমোডো ডেভ এক্সটেনশনের একটি হিউরিস্টিক (এভাবে ত্রুটি প্রবণ) ডাটাবেস ব্যতীত বহু-কালিক প্রত্যয়ের জন্য কাজ করে না।
সিরো সান্তিলি 郝海东 冠状 病 六四 事件

4
আপনি File.extname("example.png").downcaseযে এক্সটেনশনটি সমস্ত ক্যাপগুলিতে নেই তা নিশ্চিত করতে চাইবেন
স্যাম ইটন

@ সিরোস্যান্টিলি 六四 事件 法轮功 包 卓 轩 আপনি যদি প্রথম বিন্দুর পরে কিছু অন্তর্ভুক্ত না করে বেছে নেন ... তবে লোকেরা বিন্দু দিয়ে ফাইলের নাম তৈরি করে, তাই হ্যাঁ, উভয় দিকই ত্রুটি প্রবণ, তাতে একমত হয়েছিলেন।
লুব

78

extnameফাইল ক্লাস থেকে পদ্ধতি ব্যবহার করুন

File.extname("test.rb")         #=> ".rb"

এছাড়াও আপনি basenameপদ্ধতি প্রয়োজন হতে পারে

File.basename("/home/gumby/work/ruby.rb", ".rb")   #=> "ruby"

16

বেশ পুরানো বিষয় তবে এখানে এক্সটেনশন বিভাজক বিন্দু এবং সম্ভাব্য ট্রেলিং স্পেসগুলি থেকে মুক্তি পাওয়ার উপায়:

File.extname(path).strip.downcase[1..-1]

উদাহরণ:

File.extname(".test").strip.downcase[1..-1]       # => nil
File.extname(".test.").strip.downcase[1..-1]      # => nil
File.extname(".test.pdf").strip.downcase[1..-1]   # => "pdf"
File.extname(".test.pdf ").strip.downcase[1..-1]  # => "pdf"

0

এক্সটেনশন বিভাজকটির যাত্রা চালানো কি এটি করা সহজ হবে না?

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