String.prototype.split()
الدالة String.prototype.split()
تقسم كائن String
إلى مصفوفة من السلاسل النصية بفصلها إلى سلاسل نصية فرعية، وذلك باستخدام محرف فصل مُعيّن لمعرفة أين سيكون كل قسم.
البنية العامة
str.split([separator[, limit]])
separator
السلسلة النصية التي تُشير إلى مكان فصل السلسلة النصية، ويمكن أن يكون الفاصل separator
سلسلةً نصيةً أو تعبيرًا نمطيًا. وإذا استخدمنا سلسلةً نصيةً عاديةً تحتوي على أكثر من حرف فيجب العثور على السلسلة النصية كلها في مكان الفصل؛ أما لم تُحدَّد قيمة الوسيط separator
أو لم يكن موجودًا ضمن السلسلة النصية str
فستُعاد مصفوفة تحتوي على عنصرٍ وحيدٍ ألا وهو السلسلة النصية كاملةً. إذا كان separator
سلسلةً نصيةً فارغةً فستحوّل السلسلة str
إلى مصفوفة من المحارف.
limit
عدد صحيح يضبط الحد الأقصى لعدد الأجزاء التي ستُقسَّم السلسلة النصية إليها. وعند تحديد قيمة لهذا الوسيط، فستُقسِّم هذه الدالة السلسلة النصية عند كل مُطابَقة لقيمة separator
لكنها ستتوقف عند بلوغ عدد عناصر المصفوفة القيمةَ المُحدَّدة بالوسيط limit
. لاحظ أنَّ من الممكن أن تكون هنالك عناصر في المصفوفة عددها أقل من قيمة limit
.
القيمة المعادة
مصفوفة من أقسام السلسلة النصية الأصل عند كل مكان تمت مطابقة قيمة separator
فيه.
الوصف
عندما يُعثَر على الفاصل separator
فسيُحذَف من السلسلة النصية وستُعاد السلاسل النصية الفرعية في مصفوفة؛ وإذا لم يُعثَر على قيمة الوسيط separator
أو لم يكن موجودًا، فستحتوي المصفوفة على عنصر وحيد هو السلسلة النصية الأصلية كاملةً. وإذا كانت قيمة separator
هي سلسلة نصية فارغة، فستحوَّل السلسلة النصية str
إلى مصفوفة من المحارف؛ وإذا ظهرت قيمة separator
في بداية أو نهاية السلسلة النصية أو في كلا المكانين، فستبدأ المصفوفة أو تنتهي أو تبدأ وتنتهي بسلسلةٍ نصيةٍ فارغة (على التوالي وبالترتيب)؛ وبالتالي لو احتوت السلسلة النصية على قيمة الفاصل separator
فقط، فستتألف المصفوفة من عنصرين فارغين.
ملاحظة: عندما تكون السلسلة النصية فارغة، فستُعيد الدالة split
مصفوفةً تحتوي على سلسلة نصية فارغة، وإذا كانت السلسلة النصية وقيمة الوسيط separator
هي سلسلةٌ نصيةٌ فارغة، فستُعاد مصفوفة فارغة.
أمثلة
استخدام split()
المثال الآتي يُعرِّف دالةً تُقسِّم السلسلة النصية إلى مصفوفة من السلاسل النصية الفرعية عبر الفاصل المُحدَّد. وبعد تقسيم السلسلة النصية فستطبع الدالة عدّة رسائل تُشير إلى السلسلة النصية الأصلية، والفاصل، وعدد عناصر المصفوفة، وكل عنصر من عناصرها:
function splitString(stringToSplit, separator) {
var arrayOfStrings = stringToSplit.split(separator);
console.log('The original string is: "' + stringToSplit + '"');
console.log('The separator is: "' + separator + '"');
console.log('The array has ' + arrayOfStrings.length + ' elements: ' + arrayOfStrings.join(' / '));
}
var tempestString = 'Oh brave new world that has such people in it.';
var monthString = 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec';
var space = ' ';
var comma = ',';
splitString(tempestString, space);
splitString(tempestString);
splitString(monthString, comma);
المثال السابق سيُظهِر الناتج الآتي:
The original string is: "Oh brave new world that has such people in it."
The separator is: " "
The array has 10 elements: Oh / brave / new / world / that / has / such / people / in / it.
The original string is: "Oh brave new world that has such people in it."
The separator is: "undefined"
The array has 1 elements: Oh brave new world that has such people in it.
The original string is: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"
The separator is: ","
The array has 12 elements: Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec
إزالة الفراغات من سلسلة نصية
ستبحث الدالة split
في المثال الآتي عن 0 فراغًا أو أكثر يتبعها فاصلة منقوطة، ويليها 0 فراغًا. وعند العثور على ذلك فستحذف الفراغات والفاصلة المنقوطة وستحوّل السلاسل النصية الفرعية إلى عناصر مصفوفة باسم nameList
:
var names = 'Jaber Hammad ;Mahdi Thabit; Ahmad Rida ; Rawda Hussien ;Kareem al-Hamdan';
// Jaber Hammad ;Mahdi Thabit; Ahmad Rida ; Rawda Hussien ;Kareem al-Hamdan
console.log(names);
var re = /\s*;\s*/;
var nameList = names.split(re);
// ["Jaber Hammad", "Mahdi Thabit", "Ahmad Rida", "Rawda Hussien", "Kareem al-Hamdan"]
console.log(nameList);
إعادة عدد محدود من السلاسل النصية الفرعية
في المثال الآتي، ستبحث الدالة split
عن الفراغات في السلسلة النصية وستُعيد أوّل ثلاث سلاسل فرعية تجدها:
var myString = 'Hello World. How are you doing?';
var splits = myString.split(' ', 3);
console.log(splits); // ["Hello", "World.", "How"]
الأنماط الفرعية
إذا احتوى separator
على أنماطٍ فرعيةٍ موجودةٍ ضمن أقواس، فستُعاد النتائج المُطابَقة في المصفوفة:
var myString = 'Hello 1 word. Sentence number 2.';
var splits = myString.split(/(\d)/);
console.log(splits); // [ "Hello ", "1", " word. Sentence number ", "2", "." ]
عكس سلسلة نصية
يمكننا تقسيم السلسلة النصية إلى عناصر مصفوفة تتألف من أحرفها بجعل قيمة الوسيط separator
سلسلةً نصيةً فارغةً، ثم باستخدام دوال معالجة المصفوفات (reverse
و join
):
var str = 'asdfghjkl';
var strReverse = str.split('').reverse().join(''); // 'lkjhgfdsa'
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | نعم | نعم | نعم | نعم | نعم |
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).
- معيار ECMAScript 5.1.
- معيار ECMAScript 3rd Edition .