الفرق بين المراجعتين ل"Ruby/String/gsub"
جميل-بيلوني (نقاش | مساهمات) (إنشاء الصفحة. هذه الصفحة من مساهمات "كريم حبال".) |
جميل-بيلوني (نقاش | مساهمات) (إضافة المحتوى) |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby String]] | [[تصنيف: Ruby String]] | ||
− | يعيد التابع <code>gsub</code> | + | يعيد التابع <code>gsub</code> نسخة من السلسلة النصية التي استدعيت معه مع تبديل قيمة (أو قيم) محدَّدة مكان جميع الأنماط المتطابقة فيها. |
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">gsub(pattern, replacement) → new_str | <syntaxhighlight lang="ruby">gsub(pattern, replacement) → new_str | ||
gsub(pattern, hash) → new_str | gsub(pattern, hash) → new_str | ||
gsub(pattern) {|match| block } → new_str | gsub(pattern) {|match| block } → new_str | ||
− | gsub(pattern) → enumerator</syntaxhighlight> | + | gsub(pattern) → enumerator</syntaxhighlight>إن أعطيت كتلة <code>block</code> إلى التابع، فستُمرَّر السلسلة الحالية المتطابقة إليها وستعيَّن قيم متغيرات مثل <code>$1</code>، و <code>$2</code>، و <code>$`</code>، و <code>$&</code>، و <code>$'</code> بشكل مناسب. ستحل القيم التي تعيدها الكتلة مكان القيمة المتطابقة في كل استدعاء. |
+ | |||
+ | == المعاملات == | ||
+ | |||
+ | === <code>pattern</code> === | ||
+ | يكون عادةً [[Ruby/Regexp|تعبيرًا نمطيًّا]]. إن كان [[Ruby/String|سلسلة نصية]]، فستُفسَّر أية محارف خاصة بالتعبيرات النمطية الموجودة فيها حرفيًّا؛ أي '\\d' سيطابق خط مائل عكسي يتبعه الحرف 'd' مباشرةً بدلًا من عددٍ. | ||
+ | |||
+ | === <code>replacement</code> === | ||
+ | إن كان [[Ruby/String|سلسلة نصية]]، فسيحل مكان النصي المتطابق. قد يحوي على مراجع خلفية (back-references) للمجموعات الملتقطة عبر النمط <code>pattern</code> مثل النموذج <code>\\d</code> إذ <code>d</code> هو عدد المجموعة أو <code>\\k<n></code> إذ <code>n</code> هو اسم المجموعة. إن كان سلسلة نصية مقتبسة بعلامتي اقتباس مزدوجتين، يجب أن يُسبّق كلا المرجعين الخلفيين بخط مائل عكسي إضافي. على أي حال، لن تشير المتغيرات الخاصة بالمجموعات الملتقطة (المتطابقة) - مثل <code>$&</code> - إلى العنصر الملتقط الحالي. | ||
+ | |||
+ | === <code>hash</code> === | ||
+ | [[Ruby/Hash|جدول Hash]]. إن مُرِّر كمعامل ثاني إلى التابع وكانت إحدى القيم المتطابقة مساويةً لإحدى قيم مفاتيحه، فستُبدَل به القيمة المقابلة لهذا المفتاح. أي تُمثِّل تلك القيمة المقابلة سلسلة الاستبدال. | ||
==القيمة المعادة== | ==القيمة المعادة== | ||
− | + | تعاد نسخة من السلسلة النصية المعطاة مع تبديل القيمة <code>replacement</code> أو <code>hash</code> مكان جميع الأنماط المتطابقة فيها عبر <code>pattern</code>. سترث السلسلة النصية المعادة أي قيمة أو محارف فاسدة من السلسلة النصية الأصلية أو أية سلسلة استبدال معطية. | |
− | |||
+ | إن لم تُعطَ كتلة ولم يُمرَّر معامل ثانٍ (المعامل <code>replacement</code> أو <code>hash</code>)، فسيُعاد كائن من النوع <code>[[Ruby/Enumerator|Enumerator]]</code>. | ||
==أمثلة== | ==أمثلة== | ||
مثال على استعمال التابع <code>gsub</code>: | مثال على استعمال التابع <code>gsub</code>: | ||
سطر 22: | سطر 33: | ||
'hello'.gsub(/[eo]/, 'e' => 3, 'o' => '*') #=> "h3ll*"</syntaxhighlight> | 'hello'.gsub(/[eo]/, 'e' => 3, 'o' => '*') #=> "h3ll*"</syntaxhighlight> | ||
− | ==انظر | + | ==انظر أيضًا== |
+ | * التابع <code>[[Ruby/String/gsub-21|gsub!]]</code>: يبدل قيمة (أو قيم) محدَّدة مكان جميع الأنماط المتطابقة في السلسلة النصية التي استدعي معها. | ||
+ | * التابع <code>[[Ruby/String/scrub|scrub]]</code>: يعيد نسخة عن السلسلة النصية التي استدعي معها مع استبدال البايتات غير الصالحة بمحرف محدَّد. | ||
+ | |||
+ | * التابع <code>[[Ruby/String/replace|replace]]</code>: يستبدل محتوى السلسلة النصية التي استدعي معها بمحتوى السلسلة المُمرَّرة إليه. | ||
+ | * التابع <code>[[Ruby/String/slice|slice]]</code>: يجلب محرفًا ذا فهرس محدد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/String.html#method-i-gsub قسم التابع gsub في الصنف String في توثيق روبي الرسمي.] | *[http://ruby-doc.org/core-2.5.1/String.html#method-i-gsub قسم التابع gsub في الصنف String في توثيق روبي الرسمي.] |
مراجعة 10:09، 26 مارس 2019
يعيد التابع gsub
نسخة من السلسلة النصية التي استدعيت معه مع تبديل قيمة (أو قيم) محدَّدة مكان جميع الأنماط المتطابقة فيها.
البنية العامة
gsub(pattern, replacement) → new_str
gsub(pattern, hash) → new_str
gsub(pattern) {|match| block } → new_str
gsub(pattern) → enumerator
إن أعطيت كتلة block
إلى التابع، فستُمرَّر السلسلة الحالية المتطابقة إليها وستعيَّن قيم متغيرات مثل $1
، و $2
، و $`
، و $&
، و $'
بشكل مناسب. ستحل القيم التي تعيدها الكتلة مكان القيمة المتطابقة في كل استدعاء.
المعاملات
pattern
يكون عادةً تعبيرًا نمطيًّا. إن كان سلسلة نصية، فستُفسَّر أية محارف خاصة بالتعبيرات النمطية الموجودة فيها حرفيًّا؛ أي '\\d' سيطابق خط مائل عكسي يتبعه الحرف 'd' مباشرةً بدلًا من عددٍ.
replacement
إن كان سلسلة نصية، فسيحل مكان النصي المتطابق. قد يحوي على مراجع خلفية (back-references) للمجموعات الملتقطة عبر النمط pattern
مثل النموذج \\d
إذ d
هو عدد المجموعة أو \\k<n>
إذ n
هو اسم المجموعة. إن كان سلسلة نصية مقتبسة بعلامتي اقتباس مزدوجتين، يجب أن يُسبّق كلا المرجعين الخلفيين بخط مائل عكسي إضافي. على أي حال، لن تشير المتغيرات الخاصة بالمجموعات الملتقطة (المتطابقة) - مثل $&
- إلى العنصر الملتقط الحالي.
hash
جدول Hash. إن مُرِّر كمعامل ثاني إلى التابع وكانت إحدى القيم المتطابقة مساويةً لإحدى قيم مفاتيحه، فستُبدَل به القيمة المقابلة لهذا المفتاح. أي تُمثِّل تلك القيمة المقابلة سلسلة الاستبدال.
القيمة المعادة
تعاد نسخة من السلسلة النصية المعطاة مع تبديل القيمة replacement
أو hash
مكان جميع الأنماط المتطابقة فيها عبر pattern
. سترث السلسلة النصية المعادة أي قيمة أو محارف فاسدة من السلسلة النصية الأصلية أو أية سلسلة استبدال معطية.
إن لم تُعطَ كتلة ولم يُمرَّر معامل ثانٍ (المعامل replacement
أو hash
)، فسيُعاد كائن من النوع Enumerator
.
أمثلة
مثال على استعمال التابع gsub
:
"hello".gsub(/[aeiou]/, '*') #=> "h*ll*"
"hello".gsub(/([aeiou])/, '<\1>') #=> "h<e>ll<o>"
"hello".gsub(/./) {|s| s.ord.to_s + ' '} #=> "104 101 108 108 111 "
"hello".gsub(/(?<foo>[aeiou])/, '{\k<foo>}') #=> "h{e}ll{o}"
'hello'.gsub(/[eo]/, 'e' => 3, 'o' => '*') #=> "h3ll*"
انظر أيضًا
- التابع
gsub!
: يبدل قيمة (أو قيم) محدَّدة مكان جميع الأنماط المتطابقة في السلسلة النصية التي استدعي معها. - التابع
scrub
: يعيد نسخة عن السلسلة النصية التي استدعي معها مع استبدال البايتات غير الصالحة بمحرف محدَّد.
- التابع
replace
: يستبدل محتوى السلسلة النصية التي استدعي معها بمحتوى السلسلة المُمرَّرة إليه. - التابع
slice
: يجلب محرفًا ذا فهرس محدد، أو جزءًا محددًا ببداية وطول، أو مجالًا محددًا ببداية ونهاية من السلسلة النصية التي استدعيت معه.