الفرق بين المراجعتين ل"Ruby/String/scan"

من موسوعة حسوب
< Ruby‏ | String
اذهب إلى التنقل اذهب إلى البحث
(إنشاء الصفحة. هذه الصفحة من مساهمات "كريم حبال".)
 
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby String]]
 
[[تصنيف: Ruby String]]
يعيد التابع <code>scan</code> ب
+
يبحث التابع <code>scan</code> عن نمط محدَّد ضمن السلسلة النصية التي استدعيت معه ويعيد النتائج المتطابقة في مصفوفة أو يمرِّرها إلى الكتلة المعطاة ويعيد الناتج الذي تعيده.
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">scan(pattern) → array
 
<syntaxhighlight lang="ruby">scan(pattern) → array
 
scan(pattern) {|match, ...| block } → str</syntaxhighlight>
 
scan(pattern) {|match, ...| block } → str</syntaxhighlight>
 +
 +
== المعاملات ==
 +
 +
=== <code>pattern</code> ===
 +
[[Ruby/Regexp|تعيبر نمطي]] أو [[Ruby/String|سلسلة نصية]] يراد البحث عنها ومطابقتها في السلسلة النصية المعطاة. إن لم يحتوي هذا المعامل على مجموعات، فستتألف كل نتيجة فردية من السلسلة النصية المتطابقة (أي <code>&$</code>). أمَّا إن احتوى على مجموعات، فستكون كل نتيجة فردية مصفوفةً بحد ذاتها تحوي عنصر واحد لكل مجموعة
  
 
==القيمة المعادة==
 
==القيمة المعادة==
يعاد
+
تعاد مصفوفة تحوي ناتج تطابق النمط <code>pattern</code> مع السلسلة النصية المعطاة، أو تعاد السلسلة النصية التي تعيدها الكتلة <code>block</code> بعد عن تمرير الأجزاء التي تطابق النمط <code>pattern</code> مع السلسلة النصية المعطاة.
  
 
==أمثلة==
 
==أمثلة==
سطر 17: سطر 22:
 
a.scan(/.../)        #=> ["cru", "el ", "wor"]
 
a.scan(/.../)        #=> ["cru", "el ", "wor"]
 
a.scan(/(...)/)      #=> [["cru"], ["el "], ["wor"]]
 
a.scan(/(...)/)      #=> [["cru"], ["el "], ["wor"]]
a.scan(/(..)(..)/)  #=> [["cr", "ue"], ["l ", "wo"]]</syntaxhighlight>
+
a.scan(/(..)(..)/)  #=> [["cr", "ue"], ["l ", "wo"]]</syntaxhighlight>مثال آخر على استعمال كتلة مع التابع <code>scan</code>:<syntaxhighlight lang="ruby">
 +
a.scan(/\w+/) {|w| print "<<#{w}>> " }
 +
print "\n"
 +
a.scan(/(.)(.)/) {|x,y| print y, x }
 +
print "\n"
 +
</syntaxhighlight>ناتج تنفيذ هذا المثال:<syntaxhighlight lang="text">
 +
<<cruel>> <<world>>
 +
rceu lowlr
 +
</syntaxhighlight>
 +
 
 +
==انظر أيضًا==
 +
* التابع <code>[[Ruby/String/replace|replace]]</code>: يستبدل محتوى السلسلة النصية التي استدعي معها بمحتوى السلسلة المُمرَّرة إليه.
  
==انظر أيضا==
+
* التابع <code>[[Ruby/String/split|split]]</code>: يُقسِّم السلسلة النصية التي استدعي معها إلى سلاسل نصية فرعية اعتمادًا على فاصل محدَّد ثم يعيد تلك السلاسل الفرعية في مصفوفة.
  
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/String.html#method-i-scan قسم التابع ‎scan في الصنف String في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/String.html#method-i-scan قسم التابع ‎scan في الصنف 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: يُقسِّم السلسلة النصية التي استدعي معها إلى سلاسل نصية فرعية اعتمادًا على فاصل محدَّد ثم يعيد تلك السلاسل الفرعية في مصفوفة.

مصادر