مكافئ JavaScript لـ printf و String.Format: كيف تنسق النصوص كالمحترفين؟
هل سبق لك أن كتبت هذا الكود في JavaScript؟
let name = 'أليكسي';let age = 28;console.log('مرحبًا، اسمي ' + name + ' وعمري ' + age + ' سنة.');إذا كان الأمر كذلك - فأنت تعرف تمامًا كم هذا مزعج. فتح وإغلاق علامات الاقتباس باستمرار، وضع علامات الجمع، الخلط في المسافات. وماذا لو كنت بحاجة لإدراج 5-6 متغيرات؟ كابوس!
في اللغات الأخرى، تم حل هذه المشكلة منذ زمن طويل. في Python يوجد f"مرحبًا، {name}" و "%s %d" % (name, age). في C - printf الأسطوري. في C# و Java - String.Format. وماذا عن JavaScript؟
المفاجأة: هناك حل، وليس واحدًا فقط. في هذه المقالة، سنستعرض جميع طرق تنسيق النصوص في JavaScript - من الكلاسيكية إلى الحديثة. ستتعرف على أي مكافئ لـ printf في JavaScript يناسب مهمتك، وستنسى إلى الأبد عملية الربط.
لماذا سؤال "JavaScript equivalent to printf/String.Format" شائع جدًا؟
على Stack Overflow، جمع هذا السؤال مئات الآلاف من المشاهدات. وهذا ليس من قبيل الصدفة. كل مطور ينتقل من لغة أخرى إلى JavaScript، يبحث أولاً عن أداة تنسيق النصوص المألوفة لديه.
المشكلة هي أنه في JavaScript الخالص لا يوجد مكافئ مدمج لـ printf أو String.Format. يوجد فقط الربط (دمج النصوص عبر +). لكن المطورين وجدوا عدة حلول أنيقة، وسنستعرضها.
الطريقة 1: القوالب النصية (Template Literals) - المعيار الحديث
بدءًا من ES6 (عام 2015)، ظهرت القوالب النصية في JavaScript. هذا هو أفضل مكافئ لـ printf و String.Format للاستخدام اليومي. تعمل في جميع المتصفحات الحديثة و Node.js.
الصيغة: نستخدم علامات الاقتباس المقلوبة ` بدلاً من العادية، وندرج المتغيرات عبر ${}.
let name = 'ماريا';let age = 25;let city = 'موسكو';
// بدلاً من الربطlet message = `مرحبًا، اسمي ${name}، عمري ${age} سنة، أنا من ${city}.`;console.log(message); // الإخراج: مرحبًا، اسمي ماريا، عمري 25 سنة، أنا من موسكو.ولكن هذا ليس كل شيء! داخل ${} يمكن تنفيذ أي تعبير JavaScript:
let a = 10;let b = 5;
console.log(`المجموع: ${a + b}`); // المجموع: 15console.log(`أكبر؟ ${a > b ? 'نعم' : 'لا'}`); // أكبر؟ نعمconsole.log(`عشوائي: ${Math.random()}`); // عشوائي: 0.4837...لماذا هذا أفضل مكافئ لـ printf في JavaScript؟
- قابلية القراءة - يبدو الكود كنص عادي مع إدراجات
- الأمان - يتم الهروب تلقائيًا
- متعدد الأسطر - يمكن كتابة النص على عدة أسطر
- التعبيرات - يمكن إدراج نتائج العمليات الحسابية
قوالب نصية متعددة الأسطر
let html = `<div class="card"> <h2>${title}</h2> <p>${description}</p></div>`;
console.log(html);// الإخراج - HTML منظم مع الحفاظ على فواصل الأسطرقارن ذلك بالربط - الفرق هائل!
الطريقة 2: مكتبة sprintf-js - printf الكلاسيكي في JavaScript
إذا كنت تشتاق إلى printf من C أو تنسيق % من Python، لديك خيار ممتاز - مكتبة sprintf-js.
التثبيت عبر npm:
npm install sprintf-jsالاستخدام:
const sprintf = require('sprintf-js').sprintf;const vsprintf = require('sprintf-js').vsprintf;
// تنسيق بسيطlet result = sprintf('مرحبًا، %s! عمرك %d سنة.', 'إيفان', 30);console.log(result); // مرحبًا، إيفان! عمرك