RegExp.prototype.[@@split]()
الدالة RegExp.prototype.[@@split]() تقسم كائن String إلى مصفوفة من السلاسل النصية بفصلها إلى سلاسل نصية فرعية.
البنية العامة
regexp[Symbol.split](str[, limit])
str
السلسلة النصية التي نريد قسمها.
limit
عدد صحيح يضبط الحد الأقصى لعدد الأجزاء التي ستُقسَّم السلسلة النصية إليها. وعند تحديد قيمة لهذا الوسيط، فستُقسِّم هذه الدالة السلسلة النصية عند كل مُطابَقة للتعبير النمطي، لكنها ستتوقف عند بلوغ عدد عناصر المصفوفة القيمة المُحدَّدة بالوسيط limit. لاحظ أنَّ من الممكن أن تكون هنالك عناصر في المصفوفة عددها أقل من قيمة limit.
القيمة المعادة
مصفوفة من أقسام السلسلة النصية الأصل.
الوصف
تُستدعى هذه الدالة داخليًا في الدالة String.prototype.split() وذلك إذا كان الوسيط separator هو كائن RegExp. فمثلًا، كلا المثالين الآتيين له يُعيد النتيجة نفسها:
'a-b-c'.split(/-/);
/-/[Symbol.split]('a-b-c');
الغرض من وجود هذه الدالة هو السماح بإمكانية تخصيصها في الأصناف الفرعية المشتقة من RegExp.
إذا لم يكن الوسيط separator هو كائن من النوع RegExp، فلن تستدعي الدالة String.prototype.split() هذه الدالة، ولن تُنِشئ كائن RegExp من الأساس.
أمثلة
استدعاء مباشر
ستُستخدَم هذه الدالة بنفس طريقة استخدام الدالة String.prototype.split():
var re = /-/g;
var str = '2016-01-02';
var result = re[Symbol.split](str);
console.log(result); // ["2016", "01", "02"]
استخدام @@split في الأصناف الفرعية
يمكن للأصناف الفرعية المشتقة من الصنف RegExp إعادة تعريف الدالة [@@split]() لتغيير سلوكها الافتراضي:
class MyRegExp extends RegExp {
[Symbol.split](str, limit) {
var result = RegExp.prototype[Symbol.split].call(this, str, limit);
return result.map(x => "(" + x + ")");
}
}
var re = new MyRegExp('-');
var str = '2016-01-02';
var result = str.split(re); // String.prototype.split calls re[@@split].
console.log(result); // ["(2016)", "(01)", "(02)"]
دعم المتصفحات
| الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| الدعم الأساسي | نعم | 49 | غير مدعومة | نعم | نعم |
على النقيض من متصفح IE، يدعم Edge هذه الميزة.
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).