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
الدعم الأساسي نعم نعم نعم نعم نعم

مصادر ومواصفات