التابع String.slice
في روبي
يجلب التابع slice
محرفًا ذا فهرس محدد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.
في الحالات الثلاث السابقة، إن مُرِّرت قيم سالبة للفهارس، فسيُحسَب موضع المحرف بدءًا من نهاية السلسلة، إذ تمثل القيمة -1 فهرس المحرف الأخير.
بالنسبة للحالتين الثانية والثالثة، فهرس البداية يُحسب قبل محرف واحد والفهرس يطابق حجم السلسلة.
عند تمرير تعبير نمطي (Regexp) إلى التابع slice
، يعيد التابع الجزء المطابق من السلسلة. إذا أُلحق التعبير النمطي بمُعامل التقاط (capture)، وهو عبارة عن اسم أو فهرس لمجموعة التقاط ضمن التعبير النمطي، فإنَّ التابع slice
يعيد المجموعة المُحددة بدلًا من إعادة الجزء المُطابق (MatchData
) بأكمله.
عند تمرير سلسلة إلى التابع، ستُعاد هذه السلسلة في حال كانت محتواة في السلسلة النصية؛ أما في حال لم تكن، ستُعاد القيمة nil
.
البنية العامة
slice(index) → new_str or nil
slice(start, length) → new_str or nil
slice(range) → new_str or nil
slice(regexp) → new_str or nil
slice(regexp, capture) → new_str or nil
slice(match_str) → new_str or nil
المعاملات
index
عدد صحيح يمثل فهرس المحرف المراد جلبه من السلسلة المُستدعاة.
start
عدد صحيح يمثل فهرس بداية المحارف المراد جلبها من السلسلة المُستدعاة.
length
عدد صحيح يمثل طول السلسلة المراد جلبها من السلسلة المُستدعاة.
range
مجال يحدد فهرس البداية وفهرس النهاية لسلسلة المحارف المراد جلبها من السلسلة المُستدعاة.
regexp
تعبير نمطي يمثل المحارف المراد مطابقتها وجلبها من السلسلة المُستدعاة.
capture
فهرس أو اسم للمجموعة الملتقطة في التعبير النمطي regexp
المُراد إعادتها فقط.
match_str
السلسلة المراد جلبها من السلسلة المُستدعاة.
القيم المعادة
تُعاد سلسلة من محرف وحيد ضمن الفهرس index
المُحدد، أو سلسلة المحارف المحددة بالبداية start
والطول length
أو بالمجال range
.
إن مُرِّرت قيم سالبة للفهارس، فسيُحسَب موضع المحرف بدءًا من نهاية السلسلة، إذ تمثل القيمة -1 فهرس المحرف الأخير.
تُعاد سلسلة فارغة في حال كان فهرس بداية المجال المُحدد يقع عند نهاية السلسلة النصية المعطاة.
تُعاد القيمة nil
في حال كان الفهرس خارج السلسلة أو في حال تمرير طول سالب.
تُعاد سلسلة من المحارف التي تطابق التعبير النمطي regexp
أو المجموعة المحددة capture
منه، أو تعاد القيمة nil
في حال عدم العثور على أي تطابق.
تُعاد السلسلة match_str
المحددة إن كانت مُحتواة في السلسلة النصية المعطاة، أو تعاد القيمة nil
في حال لم تكن السلسلة المُحددة موجودة في السلسلة النصية.
أمثلة
مثال على استعمال التابع slice
:
a = "hello there"
a[1] #=> "e"
a[2, 3] #=> "llo"
a[2..3] #=> "ll"
a[-3, 2] #=> "er"
a[7..-2] #=> "her"
a[-4..-2] #=> "her"
a[-2..-4] #=> ""
a[11, 0] #=> ""
a[11] #=> nil
a[12, 0] #=> nil
a[12..-1] #=> nil
a[/[aeiou](.)\1/] #=> "ell"
a[/[aeiou](.)\1/, 0] #=> "ell"
a[/[aeiou](.)\1/, 1] #=> "l"
a[/[aeiou](.)\1/, 2] #=> nil
a[/(?<vowel>[aeiou])(?<non_vowel>[^aeiou])/, "non_vowel"] #=> "l"
a[/(?<vowel>[aeiou])(?<non_vowel>[^aeiou])/, "vowel"] #=> "e"
a["lo"] #=> "lo"
a["bye"] #=> nil
انظر أيضًا
- المعامل
[]
: يجلب محرفًا ذا فهرس محدد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه. - التابع
byteslice
: يجلب محرفًا ذا فهرس محدَّد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.
- التابع
slice!
: يقتطع محرفًا ذا فهرس محدد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.