أمثلة على تقسيم السلاسل النصية في جافاسكريبت: تحويل String إلى Array باستخدام Split()

دقائق القراءة: 4

تُعد السلاسل النصية (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() قدرتها على تبسيط المهام المعقدة وتحسين جودة الكود. إن إتقان هذه الدالة يعزز من مهارات المطور في التعامل مع البيانات النصية ويساهم في بناء تطبيقات أكثر قوة واستجابة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *