Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ismaeldm

Como retirar um determinado caractere de um texto utilizando Pascal?

Recommended Posts

Olá! Estou iniciando com meu curso em Pascal :)

E agora eu tenho uma pequena duvida...

Que código eu usaria para tirar TODOS os caracteres que eu selecionei de um texto informado pelo usuario?

 

Tipo assim, o usuario informou a palavra "exemplo", só que no meu algoritmo esta defenido que todas as letras "e" são removidas, e então ele mostra apenas "xmplo"

Como faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe uma função chamada StringReplace(source, old, new: string);

Com ela, você passa para o primeiro parâmetro da string a ser alterada, para o segundo parâmetro o valor antigo, e para o terceiro parâmetro o novo valor. Então você faria algo assim:

 

var
 texto: string;
begin
 texto := 'exemplo';
 texto := StringReplace(texto, 'e', '');
 ShowMessage(texto); // xmplo
end;

 

Ela está na unit SysUtils. Acredito que o Pascal tenha ela.

 

Boa sorte. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe uma função chamada StringReplace(source, old, new: string);

Com ela, você passa para o primeiro parâmetro da string a ser alterada, para o segundo parâmetro o valor antigo, e para o terceiro parâmetro o novo valor.

 

Ela está na unit SysUtils. Acredito que o Pascal tenha ela.

 

Boa sorte. :)

Eu tentei utilizar com o Free Pascal mas sem sucesso... Talvez isso só funcione com o Delphi mesmo (coisa que ainda não aprendi la)...

Entretanto, conversei com o Prof hoje e ele me explicou algumas coisas, então fiz o seguinte codigo...

program TiraCaractere;
var
 txt, caractere, txtafter, txtbefore: string;
 caracteres, position: integer;
begin
 writeln('Aten‡Æo: O programa diferencia maiuscula de minuscula');
 write('Digite o texto: ');
 readln(txt);
 write('Digite o caractere: ');
 readln(caractere);
 position := 1;
 while (position<>0) do
 begin
   caracteres := length(txt);
   position := pos(caractere, txt);
   txtafter := copy(txt, 1, position-1);
   txtbefore := copy(txt, position+1, caracteres);
   txt := txtafter+txtbefore;
 end;
 writeln(txt);
 readln;
end.

 

Funcionou como o esperado :)

Bem, isso foi só uma curiosidade mesmo... Agradeço pela resposta ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, já esperava mesmo que essa função não estivesse presente no Pascal. No entanto, eu ia postar algo parecido com essa solução sua, mas já que você postou. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tentei utilizar com o Free Pascal mas sem sucesso... Talvez isso só funcione com o Delphi mesmo (coisa que ainda não aprendi la)...

Entretanto, conversei com o Prof hoje e ele me explicou algumas coisas, então fiz o seguinte codigo...

program TiraCaractere;
var
 txt, caractere, txtafter, txtbefore: string;
 caracteres, position: integer;
begin
 writeln('Aten‡Æo: O programa diferencia maiuscula de minuscula');
 write('Digite o texto: ');
 readln(txt);
 write('Digite o caractere: ');
 readln(caractere);
 position := 1;
 while (position<>0) do
 begin
   caracteres := length(txt);
   position := pos(caractere, txt);
   txtafter := copy(txt, 1, position-1);
   txtbefore := copy(txt, position+1, caracteres);
   txt := txtafter+txtbefore;
 end;
 writeln(txt);
 readln;
end.

 

Funcionou como o esperado :)

Bem, isso foi só uma curiosidade mesmo... Agradeço pela resposta ^^

esta função funciona no free pascal sim, mas é possível fazer de uma outra forma

for i := 1 to length(txt) -1 do
 if UpCase(txt[i]) = 'E' then
   delete(txt, i, 1);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.