التابع String.scan في روبي

من موسوعة حسوب
< Ruby‏ | String
مراجعة 19:45، 27 مارس 2019 بواسطة جميل-بيلوني (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

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

البنية العامة

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

المعاملات

pattern

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

القيمة المعادة

تعاد مصفوفة تحوي ناتج تطابق النمط pattern مع السلسلة النصية المعطاة، أو تعاد السلسلة النصية التي تعيدها الكتلة block بعد عن تمرير الأجزاء التي تطابق النمط pattern مع السلسلة النصية المعطاة.

أمثلة

مثال على استعمال التابع scan:

a = "cruel world"
a.scan(/\w+/)        #=> ["cruel", "world"]
a.scan(/.../)        #=> ["cru", "el ", "wor"]
a.scan(/(...)/)      #=> [["cru"], ["el "], ["wor"]]
a.scan(/(..)(..)/)   #=> [["cr", "ue"], ["l ", "wo"]]

مثال آخر على استعمال كتلة مع التابع scan:

a.scan(/\w+/) {|w| print "<<#{w}>> " }
print "\n"
a.scan(/(.)(.)/) {|x,y| print y, x }
print "\n"

ناتج تنفيذ هذا المثال:

<<cruel>> <<world>>
rceu lowlr

انظر أيضًا

  • التابع replace: يستبدل محتوى السلسلة النصية التي استدعي معها بمحتوى السلسلة المُمرَّرة إليه.
  • التابع split: يُقسِّم السلسلة النصية التي استدعي معها إلى سلاسل نصية فرعية اعتمادًا على فاصل محدَّد ثم يعيد تلك السلاسل الفرعية في مصفوفة.

مصادر