freeCodeCamp/guide/arabic/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../spinal-tap-case/index.md

7.7 KiB

title localeTitle
Spinal Tap Case حنفية شبكية

:triangular_flag_on_post: تذكر استخدام Read-Search-Ask إذا واجهتك مشكلة. حاول إقران البرنامج :busts_in_silhouette: واكتب الكود الخاص بك :pencil:

:checkered_flag: شرح المشكلة:

قم بتحويل السلسلة المعطاة إلى جملة صغيرة بالكلمات المرتبطة بشُرط.

روابط ذات صلة

:speech_balloon: تلميح: 1

قم بتكوين تعبير عادي لكل المساحات البيضاء والشرطات السفلية.

حاول أن تحل المشكلة الآن

:speech_balloon: تلميح: 2

سيكون عليك أيضًا جعل كل شيء صغيرًا.

حاول أن تحل المشكلة الآن

:speech_balloon: تلميح: 3

الجزء الصعب هو الحصول على جزء التعبير العادي للعمل ، بمجرد القيام بذلك ، ثم مجرد تحويل الأحرف الكبيرة إلى أحرف صغيرة واستبدال المسافات مع الشرطات السفلية باستخدام replace() .

حاول أن تحل المشكلة الآن

تنبيه المفسد!

علامة تحذير

الحل في المستقبل!

:beginner: الحل الأساسي للكود:

`function spinalCase(str) { // Create a variable for the white space and underscores. var regex = /\s+|_+/g;

// Replace low-upper case to low-space-uppercase str = str.replace(/([az])([AZ])/g, '$1 $2');

// Replace space and underscore with - return str.replace(regex, '-').toLowerCase(); }

// test here spinalCase('This Is Spinal Tap'); `

:rocket: تشغيل الكود

شرح الشفرة:

  • يحتوي regex على التعبير العادي /\s+|_+/g ، والذي سيحدد كل المسافات البيضاء والشرطات السفلية.
  • يضع replace() الأول replace() مسافة قبل أي أحرف كبيرة تمت مصادفتها في str السلسلة بحيث يمكن استبدال المسافات بشُرط في وقت لاحق.
  • أثناء استعادة السلسلة ، replace() آخر replace() المسافات والشرطات السفلية باستخدام الشرطات باستخدام regex .

:sunflower: حل الشفرة المتوسطة:

`function spinalCase(str) { // Replace low-upper case to low-space-uppercase str = str.replace(/([az])([AZ])/g, '$1 $2'); // Split on whitespace and underscores and join with dash return str.toLowerCase().split(/(?:_| )+/) .join('-'); }

// test here spinalCase('This Is Spinal Tap'); `

:rocket: تشغيل الكود

شرح الشفرة:

  • على غرار الحل الأول ، يضع replace() الأول replace() مسافة قبل أي أحرف كبيرة تمت رؤيتها في str السلسلة بحيث يمكن استبدال المسافات بشُرط في وقت لاحق.
  • بدلاً من استخدام replace() هنا لاستبدال whitespace والشرطات السفلية مع الشرطات ، يتم split() السلسلة split() على التعبير العادي /(?:_| )+/ و join() - على - .

روابط ذات صلة

:rotating_light: الحل المتقدم للكود:

`function spinalCase(str) { // "It's such a fine line between stupid, and clever." // --David St. Hubbins

return str.split(/\s|_|(?=[AZ])/).join('-').toLowerCase() } `

:rocket: تشغيل الكود

شرح الشفرة:

  • تقسيم السلسلة في أحد الشروط التالية (تم تحويلها إلى صفيف )
    • تم العثور على حرف مسافة بيضاء [ \s ]
    • تم اكتشاف حرف الشرطة السفلية [ _ ]
    • أو متبوعاً بحرف كبير [ (?=[AZ]) ]
  • الانضمام إلى الصفيف باستخدام واصلة ( - )
  • أحرف صغيرة السلسلة الناتجة بأكملها

روابط ذات صلة

:clipboard: ملاحظات للمساهمات:

  • :warning: لا تقم بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها مشابهة ولكن أفضل ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
  • أضف شرحًا لحلك.
  • تصنيف الحل في واحدة من الفئات التالية - الأساسي والمتوسط والمتقدم . :traffic_light:
  • الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي محتويات رئيسية ذات صلة . ( :warning: لا تزيل أي أسماء مستخدمين حالية )

نرى :point_right: Wiki Challenge Solution Template كمرجع.