Texto
A concatenação precisa de Text dos dois lados
+ junta dois Texts. "Count: " + 5 não é "Count: 5". É o resultado padrão para tipos mistos,
Integer 0. Converta números, Bools e identificadores em Text com StringFormat antes.
StringFormat(format, value0, value1)
- Substitui cada
{0}porvalue0e cada{1}porvalue1. Qualquer um dos valores pode ser de qualquer tipo. Não há{2}nem especificadores de formato como{0:N2}. - Ela sempre recebe três argumentos. Passe
""para um valor que você não usa:StringFormat("{0} items", n, ""). - Para mais de dois valores, aninhe chamadas ou concatene os resultados (veja o exemplo abaixo).
- Um Real sempre aparece com seis casas decimais (
0.500000). Arredonde-o para um Integer antes para obter um número inteiro, ou multiplique-o por uma escala (MathRound(r * 100)) para uma saída com casas fixas. {0}é substituído antes de{1}, então, se o próprio texto devalue0contiver{1}, ele também será substituído.
w = WindowGetActive();
s = StringFormat(StringFormat("{0} x {1} at ", WindowGetWidth(w), WindowGetHeight(w)) + "({0}, {1})",
WindowGetX(w), WindowGetY(w));
UtilityPrint(s); // por exemplo, 1280 x 720 at (100, 80)
Medir, pesquisar, recortar
StringGetLengthconta unidades de código UTF-16, não caracteres. Um emoji fora do Plano Multilíngue Básico conta como 2.StringGetIndexOf(text, search)retorna um índice a partir de 0, ou-1quandosearchnão é encontrado. Diferencia maiúsculas de minúsculas, e não há "último índice de" (percorra com um loop).StringGetSubstring(text, start, length):startcomeça em 0. Umlengthque ultrapassa o fim é encurtado, e umstartno fim ou além dele retorna"". Umstartoulengthnegativo é um erro e interrompe a ação.- Não há sintaxe de indexação (
s[0]). UseStringGetSubstring(s, i, 1)para um caractere. StringContains,StringStartsWith,StringEndsWitheStringReplacesão exatas e diferenciam maiúsculas de minúsculas. Para um teste sem essa diferenciação, converta os dois lados para minúsculas antes.StringToUpper/StringToLowerseguem as regras de maiúsculas e minúsculas da localidade do usuário, então o i com e sem ponto do turco é tratado corretamente.StringTrimremove espaços em branco das duas pontas, inclusive o\rque sobra das quebras de linha\r\ndo Windows.StringReplaceeStringSplitinterrompem a ação se o texto pesquisado ou o delimitador estiver vazio.
A divisão é um cache lido por índice
Um valor não pode conter uma lista, então StringSplit(text, delimiter) guarda as partes no contexto
do script em execução e retorna quantas são. Leia cada parte com StringGetSplitPartAt(i); um índice
fora do intervalo retorna "". O próximo StringSplit no mesmo script substitui esse cache, então
copie uma parte para uma variável antes de dividir outra coisa. Toda função interna …EnumerateAll,
…FindAll… ou …GetAll…, junto com a sua leitora …EnumeratedAt, funciona da mesma forma.
Comparar texto
== é exato e diferencia maiúsculas de minúsculas. </> comparam de forma ordinal, por unidade de
código UTF-16, o que não é a ordem de dicionário: toda letra ASCII maiúscula vem antes de toda
minúscula, e as letras acentuadas vêm depois de z. Não apresente essa ordem a um usuário como
alfabética.