كيفية تنسيق الأرقام بفواصل الآلاف في C#: دليل كامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا الفواصل في الأرقام ليست مجرد جماليات

\n\n

تخيل: أنت تعرض راتب موظف على الشاشة — 1500000 روبل. العين تتشتت، الأصفار تتشابك، وتقوم بعد المنازل ثلاث مرات. والآن تخيل 1,500,000 — فهم فوري للمبلغ. الفرق هائل.

\n\n

على Stack Overflow، سؤال ".NET String.Format() to add commas in thousands place for a number" حصل على عشرات الآلاف من المشاهدات. هذا يعني أن المطورين في جميع أنحاء العالم يتصارعون مع نفس المهمة: كيفية تنسيق رقم بفواصل الآلاف بشكل صحيح وجميل في C#. اليوم سنستعرض جميع الأساليب — من String.Format الكلاسيكي إلى الإمكانيات الحديثة في C#.

\n\n

إذا كنت تكتب بلغة C# وتعمل مع التقارير أو البيانات المالية أو تريد ببساطة أن تبدو واجهة المستخدم الخاصة بك احترافية — فهذه المقالة لك. هيا بنا!

\n\n

ما هو String.Format() ولماذا نحتاجه؟

\n\n

String.Format() هو أسلوب ثابت يسمح بإدراج قيم المتغيرات في سلسلة نصية قالب مع التحكم في التنسيق. على عكس الربط البسيط، فإنه يوفر مرونة: يمكنك تحديد كيفية عرض الرقم بالضبط — مع فواصل، بعدد ثابت من المنازل العشرية، بتنسيق عملة، وهكذا.

\n\n

الصيغة بسيطة: String.Format("{0:N}", number)، حيث 0 هو فهرس الوسيطة، و N هو محدد التنسيق. لكن الشيطان، كما هو الحال دائمًا، في التفاصيل.

\n\n

الطريقة الأساسية: String.Format مع تنسيق "N"

\n\n

أبسط وأوضح طريقة لإضافة الفواصل إلى رقم هي استخدام محدد التنسيق "N" (من كلمة Number). يقوم تلقائيًا بإضافة فواصل الآلاف وتحديد عدد المنازل العشرية (افتراضيًا — 2).

\n\n
int number = 1234567;\nstring formatted = String.Format("{0:N}", number);\nConsole.WriteLine(formatted); // الإخراج: 1,234,567.00\n
\n\n

إذا كنت لا تحتاج إلى منازل عشرية، استخدم "N0" — الصفر يعني "صفر منازل عشرية":

\n\n
string formatted = String.Format("{0:N0}", number);\nConsole.WriteLine(formatted); // الإخراج: 1,234,567\n
\n\n

هام: رمز فاصل الآلاف يعتمد على الثقافة الحالية (CultureInfo). في الإعدادات المحلية الروسية سيكون مسافة (1 234 567)، وفي الإنجليزية فاصلة. إذا كنت بحاجة إلى فاصلة بغض النظر عن الإعدادات الإقليمية، تابع القراءة.

\n\n

البدائل: ToString("N") ودمج السلاسل النصية

\n\n

تقدم C# الحديثة طرقًا أكثر أناقة. بدلاً من String.Format، يمكنك استدعاء الأسلوب ToString مباشرة على الرقم:

\n\n
string formatted = number.ToString("N0");\nConsole.WriteLine(formatted); // 1,234,567\n
\n\n

وإذا كنت تستخدم C# 6 أو أحدث، فإن دمج السلاسل النصية سيجعل الكود أكثر قابلية للقراءة:

\n\n
string formatted = $"{number:N0}";\nConsole.WriteLine(formatted); // 1,234,567\n
\n\n

دمج السلاسل النصية هو في الأساس نفس String.Format، لكنه أكثر متعة من الناحية التركيبية. يتم تجميعه في استدعاء String.Format تحت الغطاء، لذا فإن الأداء متطابق.

\n\n

الضبط الدقيق: محددات التنسيق المخصصة

\n\n

أحيانًا لا يكون التنسيق المدمج "N" كافيًا. على سبيل المثال، قد تحتاج إلى:

\n
    \n
  • استخدام مسافة بدلاً من الفاصلة
  • \n
  • إظهار علامة "+" للأرقام الموجبة
  • \n
  • محاذاة الأرقام حسب العرض
  • \n
\n\n

لمثل هذه الحالات، توجد سلاسل تنسيق مخصصة. إليك كيفية تعيين فاصل الآلاف يدويًا باستخدام الرمز # أو 0:

\n\n
int number = 1234567;\nstring customFormat = "#,##0";\nstring formatted = number.ToString(customFormat);\nConsole.WriteLine(formatted); // 1,234,567\n
\n\n

دعنا نحلل ما يعنيه "#,##0":

\n
    \n
  • # — رقم اختياري

المدونات

توصيات الكتب