Dividir String em delphi

Com o uso da função

ExtractStrings(delimitador,espaco_branco,string,resultado);

pode-se dividir uma string. Onde:

  • delimitador como o próprio nome diz, é o caracter que separa as sub-strings;
  • espaço_branco é o conjunto de caractes a serem ignorados;
  • string é a string propriamente dita, a qual se deseja dividir;
  • resultado é a lista de sub-strings retornadas.

obs: ExtractStrings não adicona strings vazias na lista de strings.

Um caso de uso.

Suponha que em uma consulta de cep, o resultado venha em uma única string onde as sub-strings estão divididas pelo caracte pipe(|), e você deseja separar os resultados em diferentes variáveis. Para isso ao inves de criar uma função para varrer a string e ir concatenando o resultado em suas variaveis, use a função nativa do delphi ExtractStrings, como veremos logo abaixo.

var

CEP,logradouro,bairro,cidade,estado : string;

lista:TStringList;

begin

lista:=TStringList.Create;

CEP:=ConsultaCEP();

ExtractStrings([‘|’],[‘ ‘],pchar(CEP),lista);

logradouro:=lista.Strings[0];

bairrro:=lista.Strings[1];

cidade:=lista.Strings[2];

estado:=lista.Strings[3];

FreeAndNil(lista);

Isso resolve todo o problema em dividir uma string;

Por enquanto é só.

Até a próxima.

fonte: Help Delphi

9 Responses to Dividir String em delphi

  1. Leandro disse:

    Uso o delphi 7.0, ele mostra a função ExtractStrings no code source mas não funciona. Tem que utilizar algo mais alem de SysUtils? e Para usar o TStringList?

    • dungabruxo disse:

      Caro Leandro, eu utilizo o Delphi 2006, mas creio que para usar a função ExtractStrings no Delphi 7 basta adicionar apenas esta classe. Mas parta ter certeza, entre no help do delphi que você utiliza e veja qual classe deve ser referenciada.

  2. Leandro disse:

    Valeu ai cara, mas já tinha descoberto como fazer. quem que utilizar a classe ‘Classes.pas’.

  3. michael disse:

    noooooooooo velho me tirou do aperto aqui..hehe só uma dúvida eu tenho um arquivo em csv que é lido de linha a linha delimitado pelo ‘;’ quando eu utilizo a funcao que voce passou ele nao le a outra linha,…teria como dar uma ajuda por favo?

    • dungabruxo disse:

      michael, pelo que você falou que é lido de linha a linha, você terá que usar rotinas para abrir arquivo.
      tente abrir o arquivo em um memo e ir correndo linha a linha.
      caso de certo, comente aqui para que outros não passem por isso.
      um abraço.

  4. mikael disse:

    Velhoooo quebrou um galhasssoooo aquiiiiiiiiiiiii BRIGADÃOOO MESMOOO, precisar saiba que será bem vindoo…brigadooo..

  5. Foster disse:

    Realmente quebrou um galho esse exemplo.

    vlw!

  6. Claudio Guedes disse:

    Grande Dica.

    Obrigado

Deixar mensagem para michael Cancelar resposta