التابع String.scan
في روبي
يبحث التابع 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
: يُقسِّم السلسلة النصية التي استدعي معها إلى سلاسل نصية فرعية اعتمادًا على فاصل محدَّد ثم يعيد تلك السلاسل الفرعية في مصفوفة.