String Helpers — FPC / Lazarus
-
- Requisito: mode e unit
- Join — unir array com separador
- Split — quebrar string em array
- Contains — verificar se contém
- StartsWith e EndsWith
- IndexOf — posição de substring
- Trim, TrimLeft, TrimRight
- ToUpper e ToLower
- Substring — extrair trecho
- Replace — substituir ocorrências
- Length — tamanho da string
- Equals e CompareTo
- Concat — concatenar sem separador
- Exemplo prático: SQL dinâmico
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: