التابع !String.slice في روبي

من موسوعة حسوب
< Ruby‏ | String
اذهب إلى التنقل اذهب إلى البحث

يقتطع التابع !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:

string = "this is a string"
string.slice!(2)        #=> "i"
string.slice!(3..6)     #=> " is "
string.slice!(/s.*t/)   #=> "sa st"
string.slice!("r")      #=> "r"
string                  #=> "thing"

انظر أيضًا

  • المعامل []: يجلب محرفًا ذا فهرس محدد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.
  • التابع byteslice: يجلب محرفًا ذا فهرس محدَّد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.
  • التابع chop!‎: يحذف المحرف الأخير من السلسلة النصية المعطاة.
  • التابع slice: يجلب محرفًا ذا فهرس محدد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.

مصادر