freeCodeCamp/guide/arabic/certifications/javascript-algorithms-and-d.../basic-algorithm-scripting/truncate-a-string/index.md

7.9 KiB

title localeTitle
Truncate a String اقتطاع سلسلة

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

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

نحتاج إلى تقليل طول السلسلة أو اقتطاعها إذا كانت أطول من الطول الأقصى المحدد المحدد وإضافة ... إلى النهاية. إذا لم يكن طويلاً ، فإننا نحتفظ بها كما هي.

روابط ذات صلة

:speech_balloon: تلميح: 1

سلاسل غير قابلة للتغيير في JavaScript لذا سنحتاج إلى متغير جديد لتخزين السلسلة المقتطعة.

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

:speech_balloon: تلميح: 2

ستحتاج إلى استخدام طريقة الشريحة () وتحديد مكان البدء وأين تتوقف.

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

:speech_balloon: تلميح: 3

لا ننسى أنه عندما نقتسم الكلمة ، يجب علينا أيضًا حساب الطول الذي أضيفه ...

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

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

علامة تحذير

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

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

`function truncateString(str, num) { // Clear out that junk in your trunk if (str.length > num && num > 3) { return str.slice(0, (num - 3)) + '...'; } else if (str.length > num && num <= 3) { return str.slice(0, num) + '...'; } else { return str; }

} `

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

شرح الشفرة:

  • نبدأ أولاً ببيان بسيط if تحديد إحدى النتائج الثلاثة ...
  • إذا طول سلسلة لدينا هو أكبر من num نريد لاقتطاع في، ونقطة اقتطاع لدينا ثلاثة أحرف على الأقل أو أكثر في سلسلة، نعود شريحة من سلسلة لدينا تبدأ من حرف 0، وتنتهي في num - 3 . ثم نلحق '...' بنهاية السلسلة.
  • ومع ذلك، إذا طول سلسلة لدينا هو أكبر من num ولكن num ضمن أول ثلاثة أحرف، ونحن لم يكن لديك لحساب النقاط على النحو حرفا. لذلك، نعود لنفس السلسلة على النحو الوارد أعلاه، مع فارق واحد: نقطة النهاية من شريحة لدينا الآن فقط num .
  • وأخيرًا ، إذا لم تكن أي من الحالات المذكورة أعلاه صحيحة ، فهذا يعني أن طول السلسلة أقل من عدد num . لذلك ، يمكننا فقط إرجاع السلسلة.

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

function truncateString(str, num) { if (str.length <= num) { return str; } else { return str.slice(0, num > 3 ? num - 3 : num) + '...'; } }

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

شرح الشفرة:

  • أولاً ، نحتاج إلى جملة if لاختبار ما إذا كان طول السلسلة الكاملة قد تم تمريره حيث أن الوسيطة الأولى تتلاءم بالفعل ضمن حد الحجم الذي تم تمريره كوسيطة ثانية. إذا كان الأمر كذلك ، فيمكننا فقط إرجاع السلسلة التي تم تمريرها.

    إذا (str.length <= عدد الأسطوانات) عودة str؛

  • إذا فشل بيان if بنا أعلاه ، فإننا ننتقل إلى else ، حيث سنقوم بإرجاع "شريحة" من السلسلة. تقوم طريقة الشريحة باستخلاص مقطع من سلسلة وإرجاع سلسلة جديدة. هنا نعبر 0 كنقطة انطلاق لشريحة لدينا. لتحديد نقطة النهاية ، نستخدم مشغل الثلاثي: عدد num > 3 ? num - 3 : num . في الثلاثي لدينا، إذا num أكبر من 3، ونحن يجب أن عاملا في النقاط الثلاث ليبلغ الطول الإجمالي لدينا، وبالتالي نحن في نهاية شريحة لدينا في num-3 . إذا كانت قيمة num أقل من أو تساوي 3 ، فإن الشريحة تحصل على متغير نهاية num . وأخيرًا ، يتم إلحاق '...' بنهاية السلسلة الجديدة الخاصة بنا ويتم إرجاعها.

    } آخر { return str.slice (0، num> 3 num - 3: num) + '…'؛ }

  • ملاحظة لفهم الكود أعلاه ، تحتاج إلى فهم كيفية عمل مشغل Ternary. وكثيرا ما يستخدم المشغل الثلاثي كاختصار لبيان if ويتبع هذا الشكل: condition ? expr1 : expr2 . إذا تم تقييم condition إلى true ، expr1 تُرجع عامل التشغيل قيمة expr1 . خلاف ذلك ، تقوم بإرجاع قيمة expr2 .

روابط ذات صلة

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

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

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