النص
الربط يحتاج إلى Text على الجانبين
يربط + قيمتي Text. إن "Count: " + 5 ليس "Count: 5". بل هو القيمة الاحتياطية للأنواع المختلطة،
Integer 0. حوّل الأرقام وقيم Bool والمقابض إلى Text باستخدام StringFormat أولًا.
StringFormat(format, value0, value1)
- تستبدل كل
{0}بـvalue0وكل{1}بـvalue1. يمكن أن تكون أي من القيمتين من أي نوع. لا يوجد{2}ولا محددات تنسيق مثل{0:N2}. - تأخذ دائمًا ثلاث وسيطات. مرّر
""للقيمة التي لا تستخدمها:StringFormat("{0} items", n, ""). - لأكثر من قيمتين، استخدم استدعاءات متداخلة أو اربط النتائج (راجع المثال أدناه).
- تُعرض قيمة Real دائمًا بست خانات عشرية (
0.500000). قرّبها إلى Integer أولًا للحصول على عدد صحيح، أو غيّر مقياسها (MathRound(r * 100)) للحصول على مخرجات بفاصلة ثابتة. - تُستبدل
{0}قبل{1}، لذا إذا احتوى نصvalue0نفسه على{1}، فسيُستبدل هو أيضًا.
w = WindowGetActive();
s = StringFormat(StringFormat("{0} x {1} at ", WindowGetWidth(w), WindowGetHeight(w)) + "({0}, {1})",
WindowGetX(w), WindowGetY(w));
UtilityPrint(s); // مثلًا 1280 x 720 at (100, 80)
القياس والبحث والاقتطاع
- تحسب
StringGetLengthوحدات ترميز UTF-16، وليس الأحرف. الرمز التعبيري (emoji) الواقع خارج المستوى متعدد اللغات الأساسي يُحسب 2. - تعطي
StringGetIndexOf(text, search)فهرسًا يبدأ من 0، أو-1عندما لا يُعثر علىsearch. وهي حساسة لحالة الأحرف، ولا توجد دالة «آخر فهرس لـ» (ابحث باستخدام حلقة). StringGetSubstring(text, start, length): يبدأstartمن 0. يُقتطعlengthالذي يتجاوز النهاية، ويعطيstartالواقع عند النهاية أو بعدها"". القيمة السالبة لـstartأوlengthخطأ توقف الإجراء.- لا توجد صيغة فهرسة (
s[0]). استخدمStringGetSubstring(s, i, 1)للحصول على حرف واحد. - إن
StringContainsوStringStartsWithوStringEndsWithوStringReplaceدقيقة وحساسة لحالة الأحرف. لإجراء اختبار غير حساس لحالة الأحرف، حوّل الجانبين إلى أحرف صغيرة أولًا. - تتبع
StringToUpper/StringToLowerقواعد حالة الأحرف في الإعدادات المحلية للمستخدم، لذا يُعالَج حرف i التركي المنقوط وغير المنقوط بشكل صحيح. - تزيل
StringTrimالمسافات البيضاء من الطرفين، بما في ذلك\rالمتبقي من نهايات الأسطر\r\nفي Windows. - توقف
StringReplaceوStringSplitالإجراء إذا كان نص البحث أو المحدِّد فارغًا.
التقسيم ذاكرة تخزين مؤقت تقرؤها بالفهرس
لا يمكن للقيمة أن تحتوي على قائمة، لذا تخزّن StringSplit(text, delimiter) الأجزاء في سياق البرنامج
النصي قيد التشغيل وتُرجع عددها. اقرأ كل جزء باستخدام StringGetSplitPartAt(i)؛ والفهرس الخارج عن النطاق
يعطي "". يحل استدعاء StringSplit التالي في البرنامج النصي نفسه محل تلك الذاكرة المؤقتة، لذا انسخ
الجزء إلى متغير قبل أن تقسّم شيئًا آخر. تعمل بالطريقة نفسها كل دالة مضمَّنة من نوع …EnumerateAll أو
…FindAll… أو …GetAll…، مقترنة بدالة القراءة …EnumeratedAt الخاصة بها.
مقارنة النصوص
إن == دقيق وحساس لحالة الأحرف. تقارن </> ترتيبيًا حسب وحدة ترميز UTF-16، وهذا ليس ترتيب القاموس:
يأتي كل حرف ASCII كبير قبل كل حرف صغير، وتأتي الأحرف ذات العلامات بعد z. لا تعرض هذا الترتيب على المستخدم على أنه ترتيب أبجدي.