Texte
La concaténation exige du Text des deux côtés
+ joint deux Text. "Count: " + 5 ne donne pas "Count: 5". C'est le repli des types
mélangés : l'Integer 0. Convertissez d'abord les nombres, les Bool et les handles en Text avec
StringFormat.
StringFormat(format, value0, value1)
- Remplace chaque
{0}parvalue0et chaque{1}parvalue1. Chaque valeur peut être de n'importe quel type. Il n'y a pas de{2}ni de spécificateurs de format comme{0:N2}. - Elle prend toujours trois arguments. Passez
""pour une valeur inutilisée :StringFormat("{0} items", n, ""). - Pour plus de deux valeurs, imbriquez les appels ou concaténez les résultats (voir l'exemple ci-dessous).
- Un Real s'affiche toujours avec six décimales (
0.500000). Arrondissez-le d'abord en Integer pour un nombre entier, ou mettez-le à l'échelle (MathRound(r * 100)) pour une sortie en virgule fixe. {0}est remplacé avant{1}: si le texte devalue0contient lui-même{1}, celui-ci est remplacé aussi.
w = WindowGetActive();
s = StringFormat(StringFormat("{0} x {1} at ", WindowGetWidth(w), WindowGetHeight(w)) + "({0}, {1})",
WindowGetX(w), WindowGetY(w));
UtilityPrint(s); // par ex. 1280 x 720 at (100, 80)
Mesurer, rechercher, extraire
StringGetLengthcompte des unités de code UTF-16, pas des caractères. Un emoji situé hors du plan multilingue de base compte pour 2.StringGetIndexOf(text, search)donne un index à partir de 0, ou-1lorsquesearchest introuvable. Elle est sensible à la casse, et il n'existe pas de « dernier index de » (parcourez avec une boucle).StringGetSubstring(text, start, length):startpart de 0. Unelengthqui dépasse la fin est tronquée, et unstartsitué à la fin ou au-delà donne"". Unstartou unelengthnégatif est une erreur et arrête l'action.- Il n'y a pas de syntaxe d'indexation (
s[0]). UtilisezStringGetSubstring(s, i, 1)pour un caractère. StringContains,StringStartsWith,StringEndsWithetStringReplacesont exactes et sensibles à la casse. Pour un test insensible à la casse, mettez d'abord les deux côtés en minuscules.StringToUpper/StringToLowersuivent les règles de casse des paramètres régionaux de l'utilisateur : le i avec et sans point du turc est donc correctement traité.StringTrimsupprime les espaces aux deux extrémités, y compris le\rlaissé par les fins de ligne Windows\r\n.StringReplaceetStringSplitarrêtent l'action si le texte recherché ou le délimiteur est vide.
Le découpage est un cache que vous lisez par index
Une valeur ne peut pas contenir de liste : StringSplit(text, delimiter) stocke donc les parties
dans le contexte du script en cours et renvoie leur nombre. Lisez chaque partie avec
StringGetSplitPartAt(i) ; un index hors limites donne "". Le StringSplit suivant du même script
remplace ce cache : copiez donc une partie dans une variable avant de découper autre chose.
Toute fonction intégrée …EnumerateAll, …FindAll… ou …GetAll…, associée à sa fonction de
lecture …EnumeratedAt, fonctionne de la même manière.
Comparer du texte
== est exact et sensible à la casse. </> comparent de façon ordinale par unité de code UTF-16,
ce qui n'est pas l'ordre du dictionnaire : toutes les lettres ASCII majuscules sont triées avant
toutes les minuscules, et les lettres accentuées après z. Ne présentez pas cet ordre à un
utilisateur comme un ordre alphabétique.