أمثلة على تقسيم السلاسل النصية في جافاسكريبت: تحويل String إلى Array باستخدام Split()
تُعد السلاسل النصية (String) والمصفوفات (Array) من هياكل البيانات الأساسية في عالم البرمجة، وتحديداً في لغة جافاسكريبت. السلسلة النصية هي تسلسل من الأحرف، بينما المصفوفة هي حاوية يمكنها تخزين قيم متعددة. هل تعلم أنه يمكنك تقسيم سلسلة نصية واحدة إلى مصفوفة من السلاسل النصية الفرعية باستخدام دالة split()؟ دعنا نستكشف كيفية عمل هذه الدالة مع أمثلة عملية.
إذا كنت تبحث عن الكود مباشرةً، فإليك هذا المثال السريع:
const publisher = 'free code camp'
publisher.split( ' ' ) // [ 'free', 'code', 'camp' ]
البنية الأساسية لدالة split()
وفقًا لتوثيق MDN، فإن البنية التي ستحتاجها لتقسيم السلسلة النصية هي str.split([separator[, limit]]). بتطبيق هذا على المثال أعلاه، نجد أن:
strهي السلسلة النصية التي نريد تقسيمها، وفي مثالنا كانتpublisher.separatorهو الفاصل الذي يتم على أساسه تقسيم السلسلة، وفي مثالنا كان مسافة فارغة' '.limitهو عدد اختياري يحدد الحد الأقصى لعدد الأجزاء التي سيتم إرجاعها في المصفوفة. في المثال أعلاه، لم نستخدمlimit.
متى تحتاج إلى استخدام دالة split()؟
تتعدد السيناريوهات التي تستدعي تقسيم السلاسل النصية. إليك بعض الأمثلة الشائعة:
المثال الأول: استخراج جزء معين من سلسلة نصية
هذا مثال شائع يتضمن استخراج رمز (token) من ترويسة المصادقة (auth header) في نظام مصادقة يعتمد على الرموز. إذا كان هذا المصطلح غير مألوف لك، فلا تقلق. كل ما تحتاج لمعرفته هو أن لدينا سلسلة نصية بقيمة 'bearer token'، ونحن بحاجة فقط إلى الجزء 'token' (لأنه الجزء الذي يحدد المستخدم):
const authHeader = 'bearer token'
const split = authHeader.split( ' ' ) // (1) [ 'bearer', 'token' ]
const token = split[ 1 ] // (2) token
ماذا يحدث في الكود أعلاه؟
- يتم تقسيم السلسلة النصية
authHeaderباستخدام المسافة' 'كفاصل. - يتم الوصول إلى العنصر الثاني في المصفوفة الناتجة (الذي يحمل الفهرس
1) وهو'token'.
المثال الثاني: تطبيق دوال المصفوفات على سلسلة نصية
غالبًا ما يكون المدخل الذي تتلقاه عبارة عن سلسلة نصية، ولكنك ترغب في تطبيق دوال المصفوفات عليها (مثل map()، filter()، أو reduce()). على سبيل المثال، لنفترض أن لديك سلسلة نصية من شفرة مورس وتريد تحويلها إلى نص إنجليزي:
const morse = '-.-. --- -.. .'
const morseToChar = {
'-.-.': 'c',
'-..': 'd',
'.': 'e',
'---': 'o',
}
const morseArray = morse.split( ' ' ) // (2) [ '-.-.', '---', '-..', '.' ]
const textArray = morseArray.map( ( char ) => morseToChar[char]) // (3) [ 'c', 'o', 'd', 'e' ]
const text = textArray.join( "" ) // (4)
شرح ما يحدث في الكود أعلاه:
- يتم إنشاء كائن حرفي (
object literal) لربط أحرف مورس بالأبجدية الإنجليزية. - يتم تقسيم شفرة مورس إلى مصفوفة باستخدام المسافة
' 'كفاصل. (بدون استخدام' 'كوسيط، ستحصل على مصفوفة تحتوي على إدخالات منفصلة لكل.و-.) - يتم تحويل مصفوفة شفرة مورس إلى مصفوفة نصية باستخدام دالة
map(). - يتم إنشاء سلسلة نصية من المصفوفة النصية باستخدام
''كفاصل في دالةjoin(). (بدون استخدام''كوسيط، سيكون الناتجc,o,d,e.)
كيفية إضافة حد (limit) لدالة split()
وفقًا لتوثيق MDN، من الممكن أيضًا تمرير وسيط limit إلى دالة split(). على الرغم من أنني لم أحتج لاستخدامه شخصيًا من قبل، إلا أن هذه هي طريقة تطبيقه:
const publisher = 'free code camp'
publisher.split( ' ' , 1 ) // [ 'free' ]
في المثال أعلاه، تم تحديد المصفوفة ليكون لها إدخال واحد فقط. بدون هذا الحد، ستكون قيمة المصفوفة [ 'free', 'code', 'camp' ].
الخلاصة التقنية
تُعد دالة split() في جافاسكريبت أداة قوية ومرنة لا غنى عنها للتعامل مع السلاسل النصية. إن فهم كيفية استخدامها بفعالية، سواء لتقسيم السلاسل بناءً على فاصل معين أو للتحكم في عدد العناصر الناتجة باستخدام وسيط limit، يفتح الباب أمام معالجة البيانات النصية بطرق مبتكرة وفعالة. من استخراج البيانات من ترويسات HTTP إلى تحويل البيانات النصية إلى تنسيقات قابلة للمعالجة بواسطة دوال المصفوفات، تُظهر split() قدرتها على تبسيط المهام المعقدة وتحسين جودة الكود. إن إتقان هذه الدالة يعزز من مهارات المطور في التعامل مع البيانات النصية ويساهم في بناء تطبيقات أكثر قوة واستجابة.