سحر السلاسل النصية: لماذا التنسيق في Kotlin هو فن
\n\nتخيل: أنت تكتب تطبيقًا لتتبع التمارين الرياضية. تحتاج إلى عرض رسالة: "مرحبًا، أليكسي! وقتك: 42.5 كم في 2:15:07. أفضل نتيجة أفضل بنسبة 3.2%.". إذا قمت بجمع هذه السلسلة النصية عن طريق التسلسل (الربط) بأسلوب Java - سيتحول الكود إلى فوضى من علامات الجمع والاقتباسات. تنسيق السلاسل النصية في Kotlin يحل هذه المشكلة بأناقة وقوة.
\n\nفي هذه المقالة، سنستعرض 5 طرق لـ Kotlin String formatting. ستتعرف على متى تستخدم الاستيفاء، ومتى تستخدم الطريقة القديمة الجيدة String.format()، ومتى تستخدم القوالب المتقدمة. هيا بنا!
1. استيفاء السلاسل النصية: الخبز والزبدة في Kotlin
\n\nالتقنية الأكثر شيوعًا وبساطة هي استيفاء السلاسل النصية في Kotlin. إنها مدمجة مباشرة في اللغة: استخدم علامة الدولار $ لإدراج متغير و ${} للتعبيرات.
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
2. String.format(): إرث Java في Kotlin
\n\nإذا كنت بحاجة إلى التحكم في التنسيق - تأتي String.format() في Kotlin للإنقاذ. هذا جسر مباشر لطريقة Java String.format() مع نفس المحددات (%s, %d, %.2f).
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\n3. MessageFormat: عندما تحتاج إلى قوالب مع عناصر نائبة
\n\nللقوالب المعقدة ذات الوسائط المتكررة أو التوطين - MessageFormat في Kotlin. يمكنه اختيار صيغة الكلمة (مفرد/جمع) وتنسيق التواريخ.
\n\nimport 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.
4. امتدادات Kotlin: الإيجاز وأمان النوع
\n\nمجتمع Kotlin يعشق امتدادات تنسيق السلاسل النصية. يمكنك كتابة الحل الخاص بك أو استخدام مكتبات جاهزة (مثل kotlinx.string).
// أبسط امتداد\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) // م