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

السؤال

نشر

استخدم التعابير النمطية لحذف الرموز كما في المثال التالي:

input = input.gsub(/<\/?[^>]*>/, '')

لكن في بعض الأحيان قد يقوم المستخدم بوضع رموز غريبة:

™ ☻

فكيف أستطيع حذف هذه الرموز الغريبة؟

Recommended Posts

  • 0
نشر

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

input = input.gsub(/[^0-9A-Za-z]/, '')

أما إذا أردت الحصول على أحرف آسكي ASCII فقط فيمكنك في هذه الحالة حذف جميع الحروف التي تملك ترتيب أكبر من 127 في جدول آسكي كما في المثال التالي:

original = "aøbauhrhræoeuacå"
cleaned = ""
original.each_byte { |x|  cleaned << x unless x > 127   }
cleaned   # => "abauhrhroeuac"
  • 0
نشر

يمكنك أيضًا استخدام parameterize الذي يقوم بحذف الأحرف الخاصة:

parameterize(string, separator: "-", preserve_case: false)  public

مثال:

'@!#$%^&*()111'.parameterize
 => "111" 

أو بواسطة الدالة scan، حيث يبحث التابع عن نمط محدَّد ضمن السلسلة النصية التي استدعيت معه ويعيد النتائج المتطابقة في مصفوفة أو يمرِّرها إلى الكتلة المعطاة ويعيد الناتج الذي تعيده.

scan(pattern)  array
scan(pattern) {|match, ...| block }  str

حيث أن pattern هو تعيبر نمطي أو سلسلة نصية يراد البحث عنها ومطابقتها في السلسلة النصية المعطاة. إن لم يحتوي هذا المعامل على مجموعات، فستتألف كل نتيجة فردية من السلسلة النصية المتطابقة (أي &$). أما إن احتوى على مجموعات، فستكون كل نتيجة فردية مصفوفة بحد ذاتها تحوي عنصر واحد لكل مجموعة.

مثال، سنستخدم هذه الدالة للحصول على السلسلة بدون الأحرف الخاصة:

original = "aøbæcå"
stripped = original.scan(/[a-zA-Z]/).to_s
puts stripped
# الخرج "abc"

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...