Desenvolvimento de Sistemas para Automação Comercial

Voltar

String Helpers — FPC / Lazarus


Requisito: mode e unit

  • Os métodos de instância do tipo String (como .Contains, .Split, etc.) estão disponíveis no FPC 3.x com a unit SysUtils e requerem o modo {$mode objfpc} ou {$mode delphi} no topo do arquivo. Sem isso, o compilador não reconhece a sintaxe de ponto na string.

  • Os métodos estáticos como String.Join e String.Split também exigem essa mesma configuração. Em projetos Lazarus, o {$mode objfpc} normalmente já está configurado pelo próprio IDE.


Join — unir array com separador

  • String.Join(separador, array) — une todos os elementos de um array de strings inserindo o separador entre cada item, sem adicioná-lo no início ou no final. É o inverso do Split.

  • Uso prático: montar SELECT dinâmico sem vírgula sobrando


Split — quebrar string em array

  • MinhaString.Split([separador]) — quebra a string em um array de strings usando o separador informado. Retorna TStringArray. É o inverso do Join.

  • Múltiplos separadores ao mesmo tempo

  • Join + Split trabalhando juntos


Contains — verificar se contém

  • MinhaString.Contains(substring) — retorna True se a string contiver a substring informada, ou False caso contrário. Equivale a Pos(sub, s) > 0 do Pascal clássico, mas muito mais legível.

  • Atenção: a comparação é case-sensitive por padrão. Para ignorar maiúsculas/minúsculas, converta para o mesmo case antes de comparar.


StartsWith e EndsWith

  • StartsWith(prefixo) — retorna True se a string começar com o prefixo informado. EndsWith(sufixo) — retorna True se a string terminar com o sufixo informado.

  • Verificar extensão de arquivo


IndexOf — posição de substring

  • MinhaString.IndexOf(substring) — retorna a posição da primeira ocorrência da substring. Retorna -1 se não encontrar.

    Atenção: base 0! — diferente do Pos() clássico do Pascal que usa base 1, o IndexOf começa a contar do zero. Fique atento ao migrar código.

  • Buscar a partir de uma posição específica


Trim, TrimLeft, TrimRight

  • Remove espaços em branco (e outros caracteres de controle como Tab e Enter) das extremidades da string. Já existiam como funções do SysUtils, mas agora também são chamados como métodos de instância.

  • Uso prático: limpar entrada do usuário antes de validar


ToUpper e ToLower

  • ToUpper converte para maiúsculas. ToLower converte para minúsculas. Equivalem às funções clássicas UpperCase() e LowerCase() do SysUtils.

  • Uso comum: comparação sem diferenciar maiúsculas/minúsculas


Substring — extrair trecho

  • MinhaString.Substring(inicio) — retorna tudo a partir do índice informado. MinhaString.Substring(inicio, quantidade) — retorna a quantidade de caracteres a partir do índice.

    ⚠️ Atenção: base 0! — diferente do Copy() clássico que usa base 1. Substring(0, 3) equivale a Copy(s, 1, 3).

  • Uso prático: extrair parte de um código


Replace — substituir ocorrências

  • MinhaString.Replace(de, para, flags) — substitui ocorrências de uma substring por outra. As flags controlam o comportamento.


Length — tamanho da string

  • MinhaString.Length — retorna o número de caracteres da string. É a mesma função Length() clássica do Pascal, agora acessível como propriedade de instância.


Equals e CompareTo

  • Equals compara duas strings retornando True/False. CompareTo retorna um número: negativo se menor, zero se igual, positivo se maior. Útil para ordenação manual.


Concat — concatenar sem separador

  • String.Concat(array) — une todos os elementos sem nenhum separador. Útil para montar strings a partir de partes sem precisar do operador + repetidamente.


Exemplo prático: SQL dinâmico

  • Combinando vários métodos para montar uma consulta SQL dinâmica de forma limpa e profissional:

  • Resultado do SQL gerado com os métodos encadeados: