إنتقل إلى المحتوى الرئيسي

النص

الربط يحتاج إلى 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. لا تعرض هذا الترتيب على المستخدم على أنه ترتيب أبجدي.