اذهب إلى المحتوى
  • 0

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

TheBrain

السؤال

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

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

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

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

my_document_is_____very_interesting___thisIs_nice445_doc.pdf 
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...