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

السؤال

نشر

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

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

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...