التابع String.split
في روبي
يُقسِّم التابع split
السلسلة النصية التي استدعي معها إلى سلاسل نصية فرعية اعتمادًا على فاصل محدَّد ثم يعيد تلك السلاسل الفرعية في مصفوفة.
البنية العامة
scan(pattern) → array
scan(pattern) {|match, ...| block } → str
المعاملات
pattern
إن كان هذا المعامل سلسلة نصية، فستُسعمَل هذه السلسلة على أنَّها الفاصل الذي يفصل أجزاء السلسلة النصية المعطاة عن بعضها بعضًا. أمَّا إن كان هذا المعامل فراغًا واحدًا، فستُقسَّم السلسلة النصية المعطاة عند كل فراغ موجود بين كلماتها؛ وعند وجود أكثر من فراغ واحد، فستُتجاهل هذه الفراغات الزائدة.
وإن كان هذا المعامل تعبيرًا نمطيًّا، فستُقسَّم السلسلة النصية المعطاة عند كل تطابق مع هذا التعبير. كلما حصل تطابق مع سلسلة نصية معدومة الطول (zero-length string)، فستُقسَّم السلسلة النصية المعطاة إلى محارف فردية. إن احتوى النمط pattern
على مجموعات، فستُعاد التطابقات المقابلة لكل مجموعة في المصفوفة أيضًا.
إن كانت قيمة هذا المعامل هي nil
، فستُستعمَل قيمة ;$
. وإن كانت قيمة ;$
هي nil
(القيمة الافتراضية)، فستُقسَّم السلسلة النصية المعطاة عند كل مسافة بيضاء وكأنه استُعملَت القيمة ' '
تمامًا.
limit
إن حُذِف هذا المعامل، تُزال العناصر الفارغة (null) الزائدة من المصفوفة المعادة. وإن كان هذا المعامل عددًا موجبًا، فسيُمثِّل هذا العدد الحد الأقصى لعدد السلاسل النصية الفرعية المعادة (تُعاد المجموعات المتطابقة أيضًا ولا تُحسَب ضمن هذا الحد). أمَّا إن كانت قيمة هذا المعامل هي 1، فستُعاد السلسلة النصية بأكملها على أنَّها العنصر الوحيد في المصفوفة. وأخيرًا إن كان هذا المعامل عددًا سالبًا، لن يكون هنالك حدًّا لعدد العناصر المعادة ولن تُزَال العناصر الفارغة (null).
القيمة المعادة
تعاد مصفوفة تحوي السلاسل النصية الفرعية المفصولة بالفاصل المحدد بالمعامل pattern
مع أخذ المعامل limit
بالحسبان إن أعطي.
أمثلة
مثال على استعمال التابع split
:
" now's the time".split #=> ["now's", "the", "time"]
" now's the time".split(' ') #=> ["now's", "the", "time"]
" now's the time".split(/ /) #=> ["", "now's", "", "the", "time"]
"1, 2.34,56, 7".split(%r{,\s*}) #=> ["1", "2.34", "56", "7"]
"hello".split(//) #=> ["h", "e", "l", "l", "o"]
"hello".split(//, 3) #=> ["h", "e", "llo"]
"hi mom".split(%r{\s*}) #=> ["h", "i", "m", "o", "m"]
"mellow yellow".split("ello") #=> ["m", "w y", "w"]
"1,2,,3,4,,".split(',') #=> ["1", "2", "", "3", "4"]
"1,2,,3,4,,".split(',', 4) #=> ["1", "2", "", "3,4,,"]
"1,2,,3,4,,".split(',', -4) #=> ["1", "2", "", "3", "4", "", ""]
"1:2:3".split(/(:)()()/, 2) #=> ["1", ":", "", "", "2:3"]
"".split(',', -1) #=> []
انظر أيضًا
- التابع
scan
: يبحث عن نمط محدَّد ضمن السلسلة النصية التي استدعيت معه ويعيد النتائج المتطابقة في مصفوفة أو يمرِّرها إلى الكتلة المعطاة ويعيد الناتج الذي تعيده. - التابع
slice
: يجلب محرفًا ذا فهرس محدد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.