String
Como faço para desmembrar um string?
Por exemplo:
Um,Dois,Três,Quatro
Não quero o caracter como retorno e sim a palavra:
String[0] = ´Um´
String[1] = ´Dois´
String[2] = ´Três´
String[4] = ´Quatro´
Obrigado
Obs.: Não importa o caracter separador
Por exemplo:
Um,Dois,Três,Quatro
Não quero o caracter como retorno e sim a palavra:
String[0] = ´Um´
String[1] = ´Dois´
String[2] = ´Três´
String[4] = ´Quatro´
Obrigado
Obs.: Não importa o caracter separador
Nigro
Curtidas 0
Respostas
Bruno Belchior
25/09/2005
por que não usar uma StringList... :?:
GOSTEI 0
Marco Salles
25/09/2005
so para te dar uma idéia..
procedure DesmenbrarString(s:String;caracter:Char);
var
i:integer;
indice:integer;
begin
indice:=1;
for i:=1 to length(s) do
if s[i] = caracter then //caracter separador
begin
showmessage(copy(s,indice,(i-indice)));
indice:=i+1;
end;
if i > indice then
begin
showmessage(copy(s,indice,(i-indice)));
indice:=i+1;
end
else
begin
showmessage(s);
end
end;
GOSTEI 0
Nigro
25/09/2005
Obrigado pela rápida resposta.
Será que não teria algo nativo?
Será que não teria algo nativo?
GOSTEI 0
Nigro
25/09/2005
Seria legal, com String List, mas não ficaria muito grande?
GOSTEI 0
Bruno Belchior
25/09/2005
Como assim muito grande :?:
GOSTEI 0
Nigro
25/09/2005
Coloque aquium código de exemplo
GOSTEI 0
Rjun
25/09/2005
var Texto: string; Lista: TStringList; i: integer; begin Texto := ´Um, Dois, Tres, Quatro, Cinco´; Lista := TStringList.Create; try Lista.Delimiter := ´.´; Lista.DelimitedText := Texto; for i := 0 to Lista.Count - 1 do ShowMessage(Lista.Strings[i]); finally FreeAndNil(Lista); end; end;
GOSTEI 0
Nigro
25/09/2005
Valeu mesmo...
Ficou metado do que eu esperava.
Obrigadão...
Ficou metado do que eu esperava.
Obrigadão...
GOSTEI 0
Fabiano Góes
25/09/2005
Aproveitando a deixa sobre TStringList,
o que exatamente faz :
o que exatamente faz :
StringList.Delimiter e StringList.DelimitedText
GOSTEI 0
Rjun
25/09/2005
[b:5bf3db1ac5]Delimiter[/b:5bf3db1ac5] é o caracter que faz a separação dos itens da lista.
[b:5bf3db1ac5]DelimitedText[/b:5bf3db1ac5] é o texto que contém o caracter delimitador que será separado em itens da stringlist.
Estude o exemplo.
[b:5bf3db1ac5]DelimitedText[/b:5bf3db1ac5] é o texto que contém o caracter delimitador que será separado em itens da stringlist.
Estude o exemplo.
GOSTEI 0
Fabiano Góes
25/09/2005
ahhhh,
Rjun desculpe !!!!!!!!!
é que tem um pequeno erro na linha:
seria uma ´,´ no lugar do ´.´
=>
acho que entendi o seu exemplo .
Valeu Rjun pela dica !!!!
Rjun desculpe !!!!!!!!!
é que tem um pequeno erro na linha:
Lista.Delimiter := ´.´;
seria uma ´,´ no lugar do ´.´
=>
Lista.Delimiter := ´,´;
acho que entendi o seu exemplo .
Valeu Rjun pela dica !!!!
GOSTEI 0
Edivaldo_ap
25/09/2005
Rogério Seguinte:
Estou desenvolvendo um sistema contábil... eu fiz o seguinte para o formato do Plano de contas...Criei uma tela de parametros com um campo dbedit nele o usuário digita o formato do plano exemplo 9.9.99.9999 e grava numa tabela do banco.... peguei o que você postou aí e consegui dividir a string, o que eu gostaria agora é ao invés de depois de for dar um showmessage, eu gostaria de gravar os campos em algum local, para posteriormente utiliza-los... tipo na hora de o usuario cadastrar um conta de nível 2 a mascara ficaria sendo 9.9..
Entendeu... segue o que voce posto na página.
Edivaldo André Pereira
var
Texto: string;
Lista: TStringList;
i: integer;
begin
Texto := ´Um, Dois, Tres, Quatro, Cinco´;
Lista := TStringList.Create;
try
Lista.Delimiter := ´.´;
Lista.DelimitedText := Texto;
for i := 0 to Lista.Count - 1 do
ShowMessage(Lista.Strings[i]);
finally
FreeAndNil(Lista);
end;
end;
Estou desenvolvendo um sistema contábil... eu fiz o seguinte para o formato do Plano de contas...Criei uma tela de parametros com um campo dbedit nele o usuário digita o formato do plano exemplo 9.9.99.9999 e grava numa tabela do banco.... peguei o que você postou aí e consegui dividir a string, o que eu gostaria agora é ao invés de depois de for dar um showmessage, eu gostaria de gravar os campos em algum local, para posteriormente utiliza-los... tipo na hora de o usuario cadastrar um conta de nível 2 a mascara ficaria sendo 9.9..
Entendeu... segue o que voce posto na página.
Edivaldo André Pereira
var
Texto: string;
Lista: TStringList;
i: integer;
begin
Texto := ´Um, Dois, Tres, Quatro, Cinco´;
Lista := TStringList.Create;
try
Lista.Delimiter := ´.´;
Lista.DelimitedText := Texto;
for i := 0 to Lista.Count - 1 do
ShowMessage(Lista.Strings[i]);
finally
FreeAndNil(Lista);
end;
end;
GOSTEI 0
Fabiano Góes
25/09/2005
edivaldo_ap, se for só o caso de gravar em algum lugar pode ser assim:
agora se for gravar no Banco de Dados é um pouco diferente, porem muito simples tb..
Um abraço !!!!
var Texto: string; Lista: TStringList; i: integer; begin Texto := ´Um, Dois, Tres, Quatro, Cinco´; Lista := TStringList.Create; try Lista.Delimiter := ´,´; Lista.DelimitedText := Texto; Lista.SaveToFile(´c:\Teste.txt´); // <== finally FreeAndNil(Lista); end; end;
agora se for gravar no Banco de Dados é um pouco diferente, porem muito simples tb..
Um abraço !!!!
GOSTEI 0
Edivaldo_ap
25/09/2005
Fabiano seria o caso de salvar no banco, porque vou usar sempre isso.
Edivaldo.
Edivaldo.
GOSTEI 0