Algoritmo StringReplace
24/02/2016
0
estou estudando algoritmo e queria montar uma função parecida com a StringReplace do delphi, claro não quero reinventar a roda, somente quero aumentar meu conhecimento em lógica, então este serve apenas para estudo.
Sendo assim, gostaria de montar uma função: function Substituir(const psTexto, psValorAntigo, psValorNovo): string; onde passando o texto como parâmetro ele substitua todos os valores antigos para o novo.
Agraço à todos.
Hugo Silva
Posts
25/02/2016
Raylan Zibel
Control + Click.
25/02/2016
Hugo Silva
Obrigado por responder o post.
Sim eu poderia olhar no StringReplace o código que ele usa, porém se entrarmos a fundo, ele usa diversos métodos que eu não gostaria de utilizar como Pos, Copy entre outros métodos de manipulação de string, eu gostaria de saber o algoritmo mesmo para essa situação.
Exemplo:
Remover números de uma frase.
function RemoverNumeros(const psTexto: string): string;
const
sCST_NUMEROS = ('0123456789');
var
iIdxTexto: Integer;
iIdxNumeros: Integer;
sChar: Char;
bContem: Boolean;
begin
Result := EmptyStr;
bContem := False;
for iIdxTexto := 1 to Length(psTexto) do
begin
sChar := psTexto[iIdxTexto];
for iIdxNumeros := 1 to Length(sCST_NUMEROS) do
begin
bContem := (sChar = sCST_NUMEROS[iIdxNumeros]);
if bContem then
Break;
end;
if not bContem then
Result := Result + sChar;
end;
end;
O que eu gostaria é saber da lógica como seria para implementar.
25/02/2016
Marco Antônio
Control + Click.
Rs
25/02/2016
Wazowski
var
I, J, N, wTam: Integer;
wAux, wNova: String;
wAchou: Boolean;
wRestante: String;
begin
wTam:= Length(prAntigo);
I:= 1;
wNova:= prPalavra;
wAchou:= false;
while (not wAchou) and (I < Length(prPalavra) + 1) do
begin
wAchou:= false;
wAux:= '';
for J:= 0 to wTam - 1 do
wAux:= wAux + prPalavra[I + J];
if wAux = prAntigo then
begin
wAchou:= true;
wNova:= '';
wRestante:= '';
for N:= 1 to I - 1 do
wNova:= wNova + prPalavra[N];
wNova:= wNova + prNovo;
for N:= I+J to Length(prPalavra) do
wRestante:= wRestante + prPalavra[N];
end;
Inc(I);
end;
if wRestante <> '' then
wRestante:= Substituir(prAntigo, prNovo, wRestante);
Result:= wNova + wRestante;
end;
25/02/2016
Hugo Silva
Muito obrigado.
25/02/2016
Hugo Silva
Obrigado.
Clique aqui para fazer login e interagir na Comunidade :)