Ismaeldm 5 Denunciar post Postado Maio 15, 2012 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
FK. 0 Denunciar post Postado Maio 16, 2012 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
Ismaeldm 5 Denunciar post Postado Maio 16, 2012 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
FK. 0 Denunciar post Postado Maio 16, 2012 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
bdexterholland 0 Denunciar post Postado Junho 10, 2012 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