تنسيق السلاسل النصية في Kotlin: 5 طرق للمحترفين

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

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

ابدأ الدورة

سحر السلاسل النصية: لماذا التنسيق في Kotlin هو فن

\n\n

تخيل: أنت تكتب تطبيقًا لتتبع التمارين الرياضية. تحتاج إلى عرض رسالة: "مرحبًا، أليكسي! وقتك: 42.5 كم في 2:15:07. أفضل نتيجة أفضل بنسبة 3.2%.". إذا قمت بجمع هذه السلسلة النصية عن طريق التسلسل (الربط) بأسلوب Java - سيتحول الكود إلى فوضى من علامات الجمع والاقتباسات. تنسيق السلاسل النصية في Kotlin يحل هذه المشكلة بأناقة وقوة.

\n\n

في هذه المقالة، سنستعرض 5 طرق لـ Kotlin String formatting. ستتعرف على متى تستخدم الاستيفاء، ومتى تستخدم الطريقة القديمة الجيدة String.format()، ومتى تستخدم القوالب المتقدمة. هيا بنا!

\n\n

1. استيفاء السلاسل النصية: الخبز والزبدة في Kotlin

\n\n

التقنية الأكثر شيوعًا وبساطة هي استيفاء السلاسل النصية في Kotlin. إنها مدمجة مباشرة في اللغة: استخدم علامة الدولار $ لإدراج متغير و ${} للتعبيرات.

\n\n
val name = "آنا"\nval age = 28\nval message = "اسمي $name، عمري $age سنة."\nprintln(message) // اسمي آنا، عمري 28 سنة.\n\n// تعبيرات مع الأقواس المتعرجة\nval price = 49.99\nval discount = 0.2\nval finalPrice = "السعر بعد الخصم: ${price * (1 - discount)} روبل."\nprintln(finalPrice) // السعر بعد الخصم: 39.992 روبل.
\n\n

الإيجابيات: قابلية القراءة، السرعة، لا استدعاءات إضافية. السلبيات: لا يوجد تحكم في تنسيق الأرقام (مثل عدد المنازل العشرية).

\n\n

متى تستخدم

\n
    \n
  • الرسائل البسيطة، السجلات، نصوص واجهة المستخدم
  • \n
  • عندما لا تحتاج إلى ضبط دقيق لتنسيق الأرقام أو التواريخ
  • \n
  • داخل println() أو StringBuilder
  • \n
\n\n

2. String.format(): إرث Java في Kotlin

\n\n

إذا كنت بحاجة إلى التحكم في التنسيق - تأتي String.format() في Kotlin للإنقاذ. هذا جسر مباشر لطريقة Java String.format() مع نفس المحددات (%s, %d, %.2f).

\n\n
val pi = 3.1415926535\nval formatted = String.format("العدد π بثلاث منازل عشرية: %.3f", pi)\nprintln(formatted) // العدد π بثلاث منازل عشرية: 3.142\n\n// وسائط متعددة\nval name = "إيفان"\nval score = 95\nval result = String.format("%s حصل على %d نقطة من 100", name, score)\nprintln(result) // إيفان حصل على 95 نقطة من 100
\n\n

ملاحظة مهمة: تنسيق السلاسل النصية Kotlin String.format ليس آمنًا من حيث النوع - إذا قمت بتمرير نوع خاطئ، ستحصل على استثناء في وقت التشغيل. للتحقق الثابت، استخدم الطرق الخاصة بـ Kotlin (انظر القسم 5).

\n\n

3. MessageFormat: عندما تحتاج إلى قوالب مع عناصر نائبة

\n\n

للقوالب المعقدة ذات الوسائط المتكررة أو التوطين - MessageFormat في Kotlin. يمكنه اختيار صيغة الكلمة (مفرد/جمع) وتنسيق التواريخ.

\n\n
import java.text.MessageFormat\n\nval pattern = "لدى {0} {1} {0,choice,0#تفاحة|1#تفاحة|2#تفاحات}."\nval result = MessageFormat.format(pattern, "بيتيا", 5)\nprintln(result) // لدى بيتيا 5 تفاحات.\n\n// مع التاريخ\nval datePattern = "اليوم {0,date,long}. الوقت: {0,time,short}"\nval now = java.util.Date()\nprintln(MessageFormat.format(datePattern, now))
\n\n

متى تختار: التدويل (i18n)، التصريفات المعقدة، القوالب التي تحتوي على 5+ وسائط. العيب: بناء جملة ضخم واعتماد على java.text.

\n\n

4. امتدادات Kotlin: الإيجاز وأمان النوع

\n\n

مجتمع Kotlin يعشق امتدادات تنسيق السلاسل النصية. يمكنك كتابة الحل الخاص بك أو استخدام مكتبات جاهزة (مثل kotlinx.string).

\n\n
// أبسط امتداد\nfun String.format(vararg args: Any?): String {\n    return String.format(this, *args)\n}\n\n// الاستخدام\nval template = "مرحبًا، %s! رصيدك: %.2f USD"\nval msg = template.format("مكسيم", 1234.5678)\nprintln(msg) // م                

المدونات

توصيات الكتب