Localizar todos blocos separados por espaço
Olá amigos,
Estou precisando pegar pedaços de uma string que estejam separados por espaço e verificar em outra string se a parte selecionada também existe. Por exemplo:
Tenho a a seguinte string:
String1 := ´Asp. Saulo Gomes da Silva Ribeiro´;
Preciso pegar cada uma das partes que estão separadas por espaço:
´Asp.´,´Saulo´,´Gomes´,´da´,´Silva´,´Ribeiro´
E comparar se cada uma delas existe na string indicada:
String2 := ´Aspirante Saulo G. S. Ribeiro´
Se alguém tiver alguma idéia de uma forma simples e que seja rápida para executar tal tarefa eu agradeço. Como o número de strings a ser verificado é consideravelmente grande, quanto mais rápido o processo for executado, melhor.
Muito grato a todos.
Abraço.
Estou precisando pegar pedaços de uma string que estejam separados por espaço e verificar em outra string se a parte selecionada também existe. Por exemplo:
Tenho a a seguinte string:
String1 := ´Asp. Saulo Gomes da Silva Ribeiro´;
Preciso pegar cada uma das partes que estão separadas por espaço:
´Asp.´,´Saulo´,´Gomes´,´da´,´Silva´,´Ribeiro´
E comparar se cada uma delas existe na string indicada:
String2 := ´Aspirante Saulo G. S. Ribeiro´
Se alguém tiver alguma idéia de uma forma simples e que seja rápida para executar tal tarefa eu agradeço. Como o número de strings a ser verificado é consideravelmente grande, quanto mais rápido o processo for executado, melhor.
Muito grato a todos.
Abraço.
Carlos Alberto
Curtidas 0
Respostas
Anonymous
20/03/2003
Carlos Alberto, esse procedimento realiza a quebra das string, verifique se ele pode ser útil
Uma string como ´O céu é azul´, escolhendo o caracter espaço (´ ´) para quebrar, seria tranformado em uma lista de strings que, colocada em um componente do tipo TListBox ficaria:
O
céu
é
azul
Isto é, onde havia um espaço a string foi ´quebrada´.
function sBreakApart(BaseString, BreakString: string; StringList: TStringList): TStringList;
var
EndOfCurrentString: byte;
TempStr: string;
begin
repeat
EndOfCurrentString := Pos(BreakString, BaseString);
if EndOfCurrentString = 0 then
StringList.add(BaseString)
else
StringList.add(Copy(BaseString, 1, EndOfCurrentString - 1));
BaseString := Copy(BaseString, EndOfCurrentString + length(BreakString), length(BaseString) - EndOfCurrentString);
until EndOfCurrentString = 0;
result := StringList;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
t: TStringList;
begin
t := TStringList.create;
ListBox1.Items.Assign(sBreakApart(Edit1.Text, ´ ´, t));
t.free;
end;
joao@funape.org.br
Uma string como ´O céu é azul´, escolhendo o caracter espaço (´ ´) para quebrar, seria tranformado em uma lista de strings que, colocada em um componente do tipo TListBox ficaria:
O
céu
é
azul
Isto é, onde havia um espaço a string foi ´quebrada´.
function sBreakApart(BaseString, BreakString: string; StringList: TStringList): TStringList;
var
EndOfCurrentString: byte;
TempStr: string;
begin
repeat
EndOfCurrentString := Pos(BreakString, BaseString);
if EndOfCurrentString = 0 then
StringList.add(BaseString)
else
StringList.add(Copy(BaseString, 1, EndOfCurrentString - 1));
BaseString := Copy(BaseString, EndOfCurrentString + length(BreakString), length(BaseString) - EndOfCurrentString);
until EndOfCurrentString = 0;
result := StringList;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
t: TStringList;
begin
t := TStringList.create;
ListBox1.Items.Assign(sBreakApart(Edit1.Text, ´ ´, t));
t.free;
end;
joao@funape.org.br
GOSTEI 0