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

127 lines
7.7 KiB
Markdown
Raw Normal View History

---
title: Spinal Tap Case
localeTitle: حنفية شبكية
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
قم بتحويل السلسلة المعطاة إلى جملة صغيرة بالكلمات المرتبطة بشُرط.
#### روابط ذات صلة
* [كائن عالمي السلسلة](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)
* شبيبة ريجكس الموارد
* [JS String Prototype Replace](http://forum.freecodecamp.com/t/javascript-string-prototype-replace/15942)
* [JS String Prototype ToLowerCase](http://forum.freecodecamp.com/t/javascript-string-prototype-tolowercase/15948)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
قم بتكوين تعبير عادي لكل المساحات البيضاء والشرطات السفلية.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
سيكون عليك أيضًا جعل كل شيء صغيرًا.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
الجزء الصعب هو الحصول على جزء التعبير العادي للعمل ، بمجرد القيام بذلك ، ثم مجرد تحويل الأحرف الكبيرة إلى أحرف صغيرة واستبدال المسافات مع الشرطات السفلية باستخدام `replace()` .
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
`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:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLnS/0)
### شرح الشفرة:
* يحتوي **regex** على التعبير العادي `/\s+|_+/g` ، والذي سيحدد كل المسافات البيضاء والشرطات السفلية.
* يضع `replace()` الأول `replace()` مسافة قبل أي أحرف كبيرة تمت مصادفتها في **str** السلسلة بحيث يمكن استبدال المسافات بشُرط في وقت لاحق.
* أثناء استعادة السلسلة ، `replace()` آخر `replace()` المسافات والشرطات السفلية باستخدام الشرطات باستخدام **regex** .
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
`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:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLnT/0)
### شرح الشفرة:
* على غرار الحل الأول ، يضع `replace()` الأول `replace()` مسافة قبل أي أحرف كبيرة تمت رؤيتها في **str** السلسلة بحيث يمكن استبدال المسافات بشُرط في وقت لاحق.
* بدلاً من استخدام `replace()` هنا لاستبدال whitespace والشرطات السفلية مع الشرطات ، يتم `split()` السلسلة `split()` على التعبير العادي `/(?:_| )+/` و `join()` `-` على `-` .
#### روابط ذات صلة
* [JS String Prototype Split](http://forum.freecodecamp.com/t/javascript-string-prototype-split/15944)
* [شبيبة صفيف النموذج](http://forum.freecodecamp.com/t/javascript-array-prototype-join/14292)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": 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:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/EUZV)
### شرح الشفرة:
* تقسيم السلسلة في أحد الشروط التالية (تم _تحويلها إلى صفيف_ )
* تم العثور على حرف مسافة بيضاء \[ `\s` \]
* تم اكتشاف حرف الشرطة السفلية \[ `_` \]
* أو متبوعاً بحرف كبير \[ `(?=[AZ])` \]
* الانضمام إلى الصفيف باستخدام واصلة ( `-` )
* أحرف صغيرة السلسلة الناتجة بأكملها
#### روابط ذات صلة
* [سلسلة # انقسام](http://devdocs.io/javascript/global_objects/string/split)
* [التعبير العادي](http://devdocs.io/javascript/global_objects/regexp)
* [Arrray # الانضمام](http://devdocs.io/javascript/global_objects/array/join)
* [سلسلة # toLowerCase](http://devdocs.io/javascript/global_objects/string/tolowercase)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.