• 0

كيف أجعل سلاسل روبي النصية مناسبة لنظام الملفات؟

أحصل على أسماء الملفات من المستخدم وبالطبع هذه الطريقة تسبب الكثير من الأخطاء لذلك أريد تعديل السلاسل النصية المدخلة وحذف كل شيء ما عدا الحروف والأرقام ورموز – و _

فلو كانت السلسلة النصية كالتالي:

my§document$is°° very&interesting___thisIs%nice445.doc.pdf

أريد تحويلها إلى:

my_document_is_____very_interesting___thisIs_nice445_doc.pdf 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يوجد عدة طرق في روبي لفعل ذلك، فيمكنك على سبيل إنشاء دالة عن طريق استخدام التعابير النمطية لحذف جميع الحروف واستبدال الرموز برمز _ كما وضعته في مثالك، وهذا سيكون كالتالي:

def sanitize_filename(filename)
  returning filename.strip do |name|
   name.gsub!(/^.*(\\|\/)/, '')
   name.gsub!(/[^0-9A-Za-z.\-]/, '_')
  end
end

ويمكنك أيضا استخدام هذه الطريقة أيضا:

def sanitize_filename(filename)
  fn = filename.split /(?<=.)\.(?=[^.])(?!.*\.[^.])/m
  fn.map! { |s| s.gsub /[^a-z0-9\-]+/i, '_' }
  return fn.join '.'
end

أما لو كنت تستخدم ريلز فإن هنالك حل أسهل بكثير وذلك عن طريق استخدام تابع parameterize كما في المثال التالي:

"my§document$is°°   very&interesting___thisIs%nice445.doc.pdf".parameterize

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن