Ola amigos veremos abaixo como dividir uma string em Delphi.
Digamos que em uma consulta você tem como retorno a seguinte string:
1|Fulano da Silva|25 anos|Masculino|Solteiro
Agora surgi à seguinte questão, Como extrair apenas as informações que me interessam?
Simples Existe uma função no Delphi para isso, a ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings)
Onde:
Separators - Caractere delimitador.
WhiteSpace - Espaço a ser considerado em branco.
Content - String a ser dividida.
Strings - Lista com Strings.
No Caso da nossa string ficaria assim:
O resultado é o seguinte:
Agora se eu quiser retornar apenas um campo... Fiz uma função que retorna o campo escolhido:
Aqui passo como parametro a String a ser analizada e o campo que quero como retorno. Um detalhe importante a ser observado é o seguinte:
Se temos a seguinte string: 1||Fulano da Silva|25 anos|Masculino|Solteiro, o campo 2 teria que ser o espaço vazio, mas ele considera o campo nome como campo 2.
Para solucionarmos isso basta fazer o seguinte:
Neste caso adicionamos o StringReplace para subistituir o | (Pipe), por ' | ', e no result Com o TrimLeft Para tirar os espaços em branco a esquerda da string.*
Para utiliza-la é bem simples:
E o retorno será “Fulano da Silva”.
Fácil néh;]
Digamos que em uma consulta você tem como retorno a seguinte string:
1|Fulano da Silva|25 anos|Masculino|Solteiro
Agora surgi à seguinte questão, Como extrair apenas as informações que me interessam?
Simples Existe uma função no Delphi para isso, a ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings)
Onde:
Separators - Caractere delimitador.
WhiteSpace - Espaço a ser considerado em branco.
Content - String a ser dividida.
Strings - Lista com Strings.
No Caso da nossa string ficaria assim:
Código PHP:
var
aString : String;
Lista : TStringList;
begin
try
Lista := TStringList.Create;
aString := ‘1|Fulano da Silva|25 anos|Masculino|Solteiro’;
ExtractStrings( ['|'], [' '], PChar(aString), Lista );
Memo1.Lines.Text := Lista.Text;
finally
FreeAndNil(Lista);
end;
end;
O resultado é o seguinte:
1
Fulano da Silva
25 anos
Masculino
Solteiro
Fulano da Silva
25 anos
Masculino
Solteiro
Código PHP:
function ExtraiString(aString: String; aCampo: Integer): String;
var
lcLista: TStringList;
i:Integer;
begin
try
lcLista := TStringList.Create;
ExtractStrings( ['|'], [' '], PChar(aString), lcLista );
for i:= 0 to aCampo -1 do
begin
Result := lcLista.Strings[i];
end;
finally
FreeAndNil( lcLista );
end;
end;
Se temos a seguinte string: 1||Fulano da Silva|25 anos|Masculino|Solteiro, o campo 2 teria que ser o espaço vazio, mas ele considera o campo nome como campo 2.
Para solucionarmos isso basta fazer o seguinte:
Código PHP:
try
lcLista := TStringList.Create;
aString := StringReplace(aString, '|', ' | ', [rfIgnoreCase, rfReplaceAll]);//*
ExtractStrings( ['|'], ['|'], PChar(aString), lcLista );
for i:= 0 to aCampo -1 do
begin
Result := TrimLeft(lcLista.Strings[i]);//*
end;
finally
FreeAndNil( lcLista );
end;
Neste caso adicionamos o StringReplace para subistituir o | (Pipe), por ' | ', e no result Com o TrimLeft Para tirar os espaços em branco a esquerda da string.*
Para utiliza-la é bem simples:
Código PHP:
ExtraiString(‘1|Fulano da Silva|25 anos|Masculino|Solteiro’, 2);
Fácil néh;]
Comment