الفرق بين المراجعتين لصفحة: «Ruby/String/slice»

من موسوعة حسوب
< Ruby‏ | String
إنشاء الصفحة. هذه الصفحة من مساهمات "كريم حبال".
 
إضافة المحتوى
 
سطر 3: سطر 3:
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby String]]
[[تصنيف: Ruby String]]
يعيد التابع <code>slice</code> ب
يجلب التابع <code>slice</code> محرفًا ذا فهرس محدد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.
 
في الحالات الثلاث السابقة، إن مُرِّرت قيم سالبة للفهارس، فسيُحسَب موضع المحرف بدءًا من نهاية السلسلة، إذ تمثل القيمة ‎-1 فهرس المحرف الأخير.
 
بالنسبة للحالتين الثانية والثالثة، فهرس البداية يُحسب قبل محرف واحد والفهرس يطابق حجم السلسلة.
 
عند تمرير [[Ruby/Regexp|تعبير نمطي]] (Regexp) إلى التابع <code>slice</code>، يعيد التابع الجزء المطابق من السلسلة. إذا أُلحق [[Ruby/Regexp|التعبير النمطي]] بمُعامل [[Ruby/MatchData|التقاط]] (capture)، وهو عبارة عن اسم أو فهرس [[Ruby/MatchData|لمجموعة التقاط]] ضمن التعبير النمطي، فإنَّ التابع <code>slice</code> يعيد المجموعة المُحددة بدلًا من إعادة الجزء المُطابق (<code>[[Ruby/MatchData|MatchData]]</code>) بأكمله.
 
عند تمرير سلسلة إلى التابع، ستُعاد هذه السلسلة في حال كانت محتواة في السلسلة النصية؛ أما في حال لم تكن، ستُعاد القيمة <code>nil</code>.
 
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">slice(index) → new_str or nil
<syntaxhighlight lang="ruby">slice(index) → new_str or nil
سطر 12: سطر 21:
slice(match_str) → new_str or nil</syntaxhighlight>
slice(match_str) → new_str or nil</syntaxhighlight>


==القيمة المعادة==
== المعاملات ==
يعاد
 
=== <code>index</code> ===
عدد صحيح يمثل فهرس المحرف المراد جلبه من السلسلة المُستدعاة.
 
=== <code>start</code> ===
[[Ruby/Integer|عدد صحيح]] يمثل فهرس بداية المحارف المراد جلبها من السلسلة المُستدعاة.
 
=== <code>length</code> ===
[[Ruby/Integer|عدد صحيح]] يمثل طول السلسلة المراد جلبها من السلسلة المُستدعاة.
 
=== <code>range</code> ===
[[Ruby/Range|مجال]] يحدد فهرس البداية وفهرس النهاية لسلسلة المحارف المراد جلبها من السلسلة المُستدعاة.
 
=== <code>regexp</code> ===
[[Ruby/Regexp|تعبير نمطي]] يمثل المحارف المراد مطابقتها وجلبها من السلسلة المُستدعاة.
 
=== <code>capture</code> ===
فهرس أو اسم [[Ruby/MatchData|للمجموعة الملتقطة]] في التعبير النمطي <code>regexp</code> المُراد إعادتها فقط.
 
=== <code>match_str</code> ===
[[Ruby/String|السلسلة]] المراد جلبها من السلسلة المُستدعاة.
 
== القيم المعادة ==
تُعاد سلسلة من محرف وحيد ضمن الفهرس <code>index</code> المُحدد، أو سلسلة المحارف المحددة بالبداية <code>start</code> والطول <code>length</code> أو بالمجال <code>range</code>.
 
إن مُرِّرت قيم سالبة للفهارس، فسيُحسَب موضع المحرف بدءًا من نهاية السلسلة، إذ تمثل القيمة ‎-1 فهرس المحرف الأخير.
 
تُعاد سلسلة فارغة في حال كان فهرس بداية المجال المُحدد يقع عند نهاية السلسلة النصية المعطاة.
 
تُعاد القيمة <code>nil</code> في حال كان الفهرس خارج السلسلة أو في حال تمرير طول سالب.
 
تُعاد سلسلة من المحارف التي تطابق التعبير النمطي <code>regexp</code> أو المجموعة المحددة <code>capture</code> منه، أو تعاد القيمة <code>nil</code> في حال عدم العثور على أي تطابق.
 
تُعاد السلسلة <code>match_str</code> المحددة إن كانت مُحتواة في السلسلة النصية المعطاة، أو تعاد القيمة <code>nil</code> في حال لم تكن السلسلة المُحددة موجودة في السلسلة النصية.


==أمثلة==
==أمثلة==
سطر 45: سطر 87:
</syntaxhighlight>
</syntaxhighlight>


==انظر أيضا==
==انظر أيضًا==
* المعامل <code>[[Ruby/String/5B-5D|[]]]</code>: يجلب محرفًا ذا فهرس محدد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.
* التابع <code>[[Ruby/String/byteslice|byteslice]]</code>: يجلب محرفًا ذا فهرس محدَّد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.
 
* التابع <code>[[Ruby/String/slice-21|slice!‎]]</code>: يقتطع محرفًا ذا فهرس محدد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.


==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/String.html#method-i-slice قسم التابع ‎slice في الصنف String في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/String.html#method-i-slice قسم التابع ‎slice في الصنف String في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 08:28، 15 ديسمبر 2018

يجلب التابع 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!‎: يقتطع محرفًا ذا فهرس محدد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.

مصادر