144 lines
8.9 KiB
Markdown
144 lines
8.9 KiB
Markdown
![]() |
---
|
|||
|
title: Title Case a Sentence
|
|||
|
localeTitle: العنوان حالة الجملة
|
|||
|
---
|
|||
|
 تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج  واكتب الكود الخاص بك 
|
|||
|
|
|||
|
###  شرح المشكلة:
|
|||
|
|
|||
|
علينا أن نعيد الجملة مع حالة اللقب. وهذا يعني أن الحرف الأول سيكون دائمًا بالحروف الكبيرة وأن يكون الباقي بأحرف صغيرة.
|
|||
|
|
|||
|
#### روابط ذات صلة
|
|||
|
|
|||
|
* [كائن السلسلة العالمية](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)
|
|||
|
* [JS String Prototype ToLowerCase](http://forum.freecodecamp.com/t/javascript-string-prototype-tolowercase/15948)
|
|||
|
* [JS String Prototype ToUpperCase](http://forum.freecodecamp.com/t/javascript-string-prototype-touppercase/15950)
|
|||
|
* [JS String Prototype Replace](http://forum.freecodecamp.com/t/javascript-string-prototype-replace/15942)
|
|||
|
|
|||
|
##  تلميح: 1
|
|||
|
|
|||
|
* يجب أن تبدأ بتجزئة السلسلة إلى مجموعة من الكلمات.
|
|||
|
* انقسام الجملة.
|
|||
|
|
|||
|
> _حاول أن تحل المشكلة الآن_
|
|||
|
|
|||
|
##  تلميح: 2
|
|||
|
|
|||
|
* يجب أن تجعل الكلمة صغيرة قبل إنشاء الحرف الأول بأحرف كبيرة.
|
|||
|
* استخدم طريقة الاستبدال في كل كلمة لتكبير الحرف الأول من كل كلمة.
|
|||
|
|
|||
|
> _حاول أن تحل المشكلة الآن_
|
|||
|
|
|||
|
##  تلميح: 3
|
|||
|
|
|||
|
* ستحتاج إلى إنشاء سلسلة جديدة بقطع من السلسلة السابقة ، وفي النهاية دمج كل شيء في سلسلة واحدة مرة أخرى.
|
|||
|
* في أسلوب الاستبدال ، قم بإعطاء الوسيطة الأولى كموضع الحرف الأول باستخدام charAt. بالنسبة إلى الوسيطة الثانية ، اكتب دالة لإرجاع الحرف المكتوب عليه كبديل.
|
|||
|
|
|||
|
> _حاول أن تحل المشكلة الآن_
|
|||
|
|
|||
|
## تنبيه المفسد!
|
|||
|
|
|||
|

|
|||
|
|
|||
|
**الحل في المستقبل!**
|
|||
|
|
|||
|
##  الحل الأساسي للكود:
|
|||
|
|
|||
|
`String.prototype.replaceAt = function(index, character) {
|
|||
|
return this.substr(0, index) + character + this.substr(index+character.length);
|
|||
|
};
|
|||
|
|
|||
|
function titleCase(str) {
|
|||
|
var newTitle = str.split(' ');
|
|||
|
var updatedTitle = [];
|
|||
|
for (var st in newTitle) {
|
|||
|
updatedTitle[st] = newTitle[st].toLowerCase().replaceAt(0, newTitle[st].charAt(0).toUpperCase());
|
|||
|
}
|
|||
|
return updatedTitle.join(' ');
|
|||
|
}
|
|||
|
`
|
|||
|
|
|||
|
 [تشغيل الكود](https://repl.it/CLjU/8)
|
|||
|
|
|||
|
### شرح الشفرة:
|
|||
|
|
|||
|
نقوم بتعديل وظيفة `replaceAt` باستخدام النموذج لتسهيل استخدام البرنامج.
|
|||
|
|
|||
|
تقسيم السلسلة بمسافات بيضاء ، وإنشاء متغير لتعقب العنوان الذي تم تحديثه. ثم نستخدم حلقة لتحويل تحويل الحرف الأول من الكلمة إلى أحرف كبيرة والباقي إلى أحرف صغيرة. من خلال إنشاء سلسلة متسلسلة تتألف من الكلمة بأكملها بأحرف صغيرة مع استبدال الحرف الأول بحرف كبير.
|
|||
|
|
|||
|
#### روابط ذات صلة
|
|||
|
|
|||
|
* [شبيبة لشرح الحلقات](http://forum.freecodecamp.com/t/javascript-for-loop/14666s-Explained)
|
|||
|
* [JS String Prototype Split](http://forum.freecodecamp.com/t/javascript-string-prototype-split/15944)
|
|||
|
* [JS String Prototype Substr](http://forum.freecodecamp.com/t/javascript-string-prototype-substr/15945)
|
|||
|
* [شبيبة صفيف النموذج](http://forum.freecodecamp.com/t/javascript-array-prototype-join/14292)
|
|||
|
|
|||
|
##  حل الشفرة المتوسطة:
|
|||
|
|
|||
|
`function titleCase(str) {
|
|||
|
var convertToArray = str.toLowerCase().split(" ");
|
|||
|
var result = convertToArray.map(function(val){
|
|||
|
return val.replace(val.charAt(0), val.charAt(0).toUpperCase());
|
|||
|
});
|
|||
|
return result.join(" ");
|
|||
|
}
|
|||
|
|
|||
|
titleCase("I'm a little tea pot");
|
|||
|
`
|
|||
|
|
|||
|
 [تشغيل الكود](https://repl.it/CLjU/9)
|
|||
|
|
|||
|
### شرح الشفرة:
|
|||
|
|
|||
|
نحن نبذل سلسلة صغيرة بأكملها ومن ثم تحويلها إلى مجموعة. ثم نستخدم وظيفة الخريطة لاستبدال الحرف الصغير بالحروف الكبيرة. وأخيرًا ، نعيد السلسلة باستخدام طريقة `join` .
|
|||
|
|
|||
|
#### روابط ذات صلة
|
|||
|
|
|||
|
* [JS Array Prototype Map](http://forum.freecodecamp.com/t/javascript-array-prototype-map/14294)
|
|||
|
|
|||
|
##  الحل المتقدم للكود:
|
|||
|
|
|||
|
`function titleCase(str) {
|
|||
|
return str.toLowerCase().replace(/(^|\s)\S/g, (L) => L.toUpperCase());
|
|||
|
}
|
|||
|
`
|
|||
|
|
|||
|
 [تشغيل الكود](https://repl.it/CLjU/14)
|
|||
|
|
|||
|
### شرح الشفرة:
|
|||
|
|
|||
|
يعمل الحل أولاً بتخفيض جميع الأحرف في السلسلة ، ثم يؤدي إلى حرف أول حرف فقط لكل كلمة.
|
|||
|
|
|||
|
* أحرف صغيرة السلسلة بأكملها باستخدام `str.toLowerCase()` .
|
|||
|
|
|||
|
* استبدل كل كلمة "أول حرف بأحرف كبيرة باستخدام `.replace` .
|
|||
|
|
|||
|
* ابحث عن الحرف في بداية كل كلمة ، أي مطابقة أي حرف بعد `space` أو مطابقة الحرف الأول من السلسلة بأكملها ، باستخدام النمط التالي.
|
|||
|
|
|||
|
* شرح regex:
|
|||
|
|
|||
|
* البحث عن كل أحرف غير بيضاء `(\S` )
|
|||
|
|
|||
|
* في بداية السلسلة `(^)`
|
|||
|
|
|||
|
* أو بعد أي حرف مسافة بيضاء `(\s)`
|
|||
|
|
|||
|
* يبحث معدّل `g` لنمط كلمة آخر من هذا القبيل في السلسلة بأكملها ويستبدلها.
|
|||
|
|
|||
|
* يعمل هذا الحل مع الرموز الوطنية والأحرف البارزة كما هو موضح في الأمثلة التالية
|
|||
|
`international characters:` 'бабушка курит трубку' // -> 'Бабушка Курит Трубку'
|
|||
|
`accented characters:` 'località àtilacol' // -> 'Località Àtilacol'
|
|||
|
|
|||
|
|
|||
|
#### روابط ذات صلة
|
|||
|
|
|||
|
* [شبيبة ريجكس الموارد](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)
|
|||
|
|
|||
|
##  ملاحظات للمساهمات:
|
|||
|
|
|||
|
*  **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
|
|||
|
* أضف شرحًا لحلك.
|
|||
|
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . 
|
|||
|
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . (  **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
|
|||
|
|
|||
|
> نرى  [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.
|