Zum Hauptinhalt springen

Text

Verkettung braucht Text auf beiden Seiten​

+ verbindet zwei Texte. "Count: " + 5 ist nicht "Count: 5". Es ist der Rückfallwert für gemischte Typen, Integer 0. Wandeln Sie Zahlen, Bools und Handles zuerst mit StringFormat in Text um.

StringFormat(format, value0, value1)​

  • Ersetzt jedes {0} durch value0 und jedes {1} durch value1. Jeder der beiden Werte kann einen beliebigen Typ haben. Es gibt kein {2} und keine Formatangaben wie {0:N2}.
  • Die Funktion nimmt immer drei Argumente. Übergeben Sie "" für einen Wert, den Sie nicht verwenden: StringFormat("{0} items", n, "").
  • Für mehr als zwei Werte verschachteln Sie Aufrufe oder verketten die Ergebnisse (siehe das Beispiel unten).
  • Ein Real zeigt immer sechs Nachkommastellen (0.500000). Runden Sie ihn für eine ganze Zahl zuerst auf einen Integer, oder skalieren Sie ihn (MathRound(r * 100)) für eine Festkommaausgabe.
  • {0} wird vor {1} ersetzt; enthält der Text von value0 selbst {1}, wird das also ebenfalls ersetzt.
w = WindowGetActive();
s = StringFormat(StringFormat("{0} x {1} at ", WindowGetWidth(w), WindowGetHeight(w)) + "({0}, {1})",
WindowGetX(w), WindowGetY(w));
UtilityPrint(s); // z. B. 1280 x 720 at (100, 80)

Messen, Suchen, Zerschneiden​

  • StringGetLength zählt UTF-16-Codeeinheiten, nicht Zeichen. Ein Emoji außerhalb der Basic Multilingual Plane zählt als 2.
  • StringGetIndexOf(text, search) liefert einen nullbasierten Index oder -1, wenn search nicht gefunden wird. Die Groß-/Kleinschreibung wird beachtet, und es gibt kein „letzter Index von“ (mit einer Schleife durchsuchen).
  • StringGetSubstring(text, start, length): start ist nullbasiert. Eine length, die über das Ende hinausreicht, wird gekürzt, und ein start am oder hinter dem Ende ergibt "". Ein negativer start oder eine negative length ist ein Fehler und beendet die Aktion.
  • Es gibt keine Indexsyntax (s[0]). Verwenden Sie StringGetSubstring(s, i, 1) für ein einzelnes Zeichen.
  • StringContains, StringStartsWith, StringEndsWith und StringReplace sind exakt und beachten die Groß-/Kleinschreibung. Für eine Prüfung ohne Beachtung der Groß-/Kleinschreibung wandeln Sie zuerst beide Seiten in Kleinbuchstaben um.
  • StringToUpper/StringToLower folgen den Groß-/Kleinschreibungsregeln des Gebietsschemas des Benutzers, sodass das türkische i mit und ohne Punkt korrekt behandelt wird.
  • StringTrim entfernt Leerraum an beiden Enden, einschließlich des \r, das von Windows-Zeilenenden \r\n übrig bleibt.
  • StringReplace und StringSplit beenden die Aktion, wenn der Suchtext oder das Trennzeichen leer ist.

Aufteilen ist ein Cache, den Sie per Index lesen​

Ein Wert kann keine Liste enthalten, daher legt StringSplit(text, delimiter) die Teile im Kontext des laufenden Skripts ab und gibt zurück, wie viele es sind. Lesen Sie jeden Teil mit StringGetSplitPartAt(i); ein Index außerhalb des Bereichs ergibt "". Das nächste StringSplit im selben Skript ersetzt diesen Cache; kopieren Sie einen Teil also in eine Variable, bevor Sie etwas anderes aufteilen. Jede integrierte Funktion …EnumerateAll, …FindAll… oder …GetAll… funktioniert zusammen mit ihrem Leser …EnumeratedAt genauso.

Text vergleichen​

== ist exakt und beachtet die Groß-/Kleinschreibung. </> vergleichen ordinal nach UTF-16-Codeeinheit, was keine Wörterbuchreihenfolge ist: Jeder ASCII-Großbuchstabe wird vor jedem Kleinbuchstaben einsortiert, und Buchstaben mit diakritischen Zeichen (etwa Umlaute) kommen nach z. Präsentieren Sie diese Reihenfolge einem Benutzer nicht als alphabetisch.