Saltar al contenido principal

Texto

La concatenación necesita Text en ambos lados​

+ une dos Text. "Count: " + 5 no es "Count: 5". Es el valor de reserva para tipos mixtos, Integer 0. Convierta primero los números, los Bool y los identificadores en Text con StringFormat.

StringFormat(format, value0, value1)​

  • Reemplaza cada {0} por value0 y cada {1} por value1. Cualquiera de los dos valores puede ser de cualquier tipo. No existe {2} ni hay especificadores de formato como {0:N2}.
  • Siempre recibe tres argumentos. Pase "" para un valor que no use: StringFormat("{0} items", n, "").
  • Para más de dos valores, anide llamadas o concatene los resultados (consulte el ejemplo de abajo).
  • Un Real siempre se muestra con seis decimales (0.500000). Redondéelo primero a Integer para obtener un número entero, o escálelo (MathRound(r * 100)) para una salida de punto fijo.
  • {0} se reemplaza antes que {1}, así que si el texto de value0 contiene {1}, también se reemplaza.
w = WindowGetActive();
s = StringFormat(StringFormat("{0} x {1} at ", WindowGetWidth(w), WindowGetHeight(w)) + "({0}, {1})",
WindowGetX(w), WindowGetY(w));
UtilityPrint(s); // p. ej. 1280 x 720 at (100, 80)

Medir, buscar, extraer​

  • StringGetLength cuenta unidades de código UTF-16, no caracteres. Un emoji fuera del plano multilingüe básico cuenta como 2.
  • StringGetIndexOf(text, search) da un índice basado en 0, o -1 cuando no se encuentra search. Distingue mayúsculas de minúsculas, y no hay un “último índice de” (recórralo con un bucle).
  • StringGetSubstring(text, start, length): start se basa en 0. Un length que sobrepasa el final se recorta, y un start en el final o más allá da "". Un start o un length negativos son un error y detienen la acción.
  • No hay sintaxis de indexación (s[0]). Use StringGetSubstring(s, i, 1) para un carácter.
  • StringContains, StringStartsWith, StringEndsWith y StringReplace son exactas y distinguen mayúsculas de minúsculas. Para una comprobación que no las distinga, pase antes ambos lados a minúsculas.
  • StringToUpper/StringToLower siguen las reglas de mayúsculas y minúsculas de la configuración regional del usuario, así que la i con y sin punto del turco se trata correctamente.
  • StringTrim quita los espacios en blanco de ambos extremos, incluido el \r que queda de los finales de línea \r\n de Windows.
  • StringReplace y StringSplit detienen la acción si el texto que se busca o el delimitador están vacíos.

Dividir crea una caché que se lee por índice​

Un valor no puede contener una lista, así que StringSplit(text, delimiter) guarda las partes en el contexto del script en ejecución y devuelve cuántas hay. Lea cada parte con StringGetSplitPartAt(i); un índice fuera del intervalo da "". El siguiente StringSplit del mismo script reemplaza esa caché, así que copie una parte en una variable antes de dividir otra cosa. Toda función integrada …EnumerateAll, …FindAll… o …GetAll…, junto con su lector …EnumeratedAt, funciona del mismo modo.

Comparar texto​

== es exacto y distingue mayúsculas de minúsculas. </> comparan de forma ordinal por unidad de código UTF-16, que no es el orden del diccionario: todas las letras ASCII mayúsculas van antes que todas las minúsculas, y las letras acentuadas van después de la z. No presente ese orden a un usuario como si fuera alfabético.