At
Retorna a posicao da primeira ocorrencia de cBusca dentro de cString. Zero se nao encontrar. Usado em parsing simples.
Assinatura: At(cBusca, cString) -> nPos
Retorna: Numeric
At e a funcao classica pra encontrar uma substring dentro de outra. Retorna posicao 1-base ou 0 se nao achar. Sem regex, sem nada — apenas busca literal exata.
Sintaxe
nPos := At("@", cEmail)
If nPos > 0
cUser := SubStr(cEmail, 1, nPos - 1)
cDomain := SubStr(cEmail, nPos + 1)
EndIf
Variacoes
| Funcao | O que faz |
|---|---|
At(cBusca, cStr) | Primeira ocorrencia, 1-base |
RAt(cBusca, cStr) | Ultima ocorrencia (R = right/reverse) |
AtNum(cBusca, cStr, nN) | N-esima ocorrencia |
Pegadinhas
- Case-sensitive —
At("a", "ABC")retorna 0. Pra ignorar case, normalize comUpper. - 1-base, nao 0 — primeira posicao e 1.
- Retorno 0 nao e erro — significa "nao encontrou". Sempre teste
> 0. - cStr vazia retorna 0.
- cBusca vazia retorna comportamento indefinido — evite.
Padrao split simples
// Parse CSV simples (sem aspas)
nPos := At(";", cLinha)
While nPos > 0
aAdd(aCampos, SubStr(cLinha, 1, nPos - 1))
cLinha := SubStr(cLinha, nPos + 1)
nPos := At(";", cLinha)
EndDo
aAdd(aCampos, cLinha) // ultimo campo
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cBusca | Character | sim | String a procurar. |
cString | Character | sim | String onde procurar. |