Fórum remover caracter de uma string #349206
19/11/2007
0
Copy(StringAux,311,12)
ele não me retorna somente o codigo e sim pedaço dele + ponto e virgula.
qdo abri o TXT no Notepad vrf que os registros que estavam dando erro tinham um caracter estranho que imagino ser um enter.
- a duvida é, como faço pra substituir esse caracater por espaço.
Carlos_tedex
Curtir tópico
+ 0Posts
19/11/2007
Pestana_
S é a string original a qual será alterada pelas substrings.
OldPattern é a substring que será localizada e substituida pela a NewPattern.
Flags indica como será localizado e substituido as ocorrências de OldPattern. Se Flags não incluir [rfReplaceAll] stringReplace somente substituirá a primeira ocorrência de OldPattern em S, caso contrario, a StringReplace substiruirá todas as instâncias de OldPattern com NewPattern.
Se o parâmetro Flags incluir rfIgnoreCase a comparação irá ser case insensitive.
se houver um caracter estranho, então faça mais ou menos assim: StringReplace(Texto, localizarString, ´´, [];
Gostei + 0
19/11/2007
Pestana_
flw.
Gostei + 0
20/11/2007
Carlos_tedex
se houver um caracter estranho, então faça mais ou menos assim: StringReplace(Texto, localizarString, ´´, []);
Caro Pestana_
Entendi o funcionamento desta função mas seguindo seu exemplo acima como vou mandar substituir algo que eu não sei o que é. Quando eu edito o arquivo TXT no notepad aparece uns quadrados... tentei localizar pelo codigo decimal 13 mas tb não obtive resultado.
Caso vc tenha um email para que eu possa lhe passar o arq TXT pra vc dar uma analisada.
mas desde já agradeço pela dica, pois essa função será de grande serventia.
qq novidade posta aqui pra nois... valew
Gostei + 0
20/11/2007
Pestana_
este arquivo não está criptografado não né?
como foi feito o processo de gravar em arquivo TXT?
flw.
Gostei + 0
20/11/2007
Carlos_tedex
- Esse arquivo foi criado por outro programador a qual não conheço.
- O arquivo não esta criptografado.
- O processo de geração desse TXT eu tb não saberia lhe dizer, pois quem o gerou foi um terceiro.
Outras formas que tentei usar o StringReplace mas sem resultados:
Str := StringReplace(S,#1310,32,[rfReplaceAll]); Str := StringReplace(S,$D$A,32,[rfReplaceAll]); Str := StringReplace(S,sLineBreak,32,[rfReplaceAll]);
Gostei + 0
20/11/2007
Vitor Alcantara
um pequeno exemplo abaixo.
function SoCaracteresPermitidos(s:string):string; var x:Integer; sAux:String; begin sAux := ´´; for x := 1 to Length(s) do //Aqui eu testo se são caracteres alphanuméricos comuns ou virgula (,) if s[x] in [´a´..´z´,´A´..´Z´, ´0´..´9´, ´,´] then sAux := sAux + s[x]; result := sAux; end;
Gostei + 0
20/11/2007
Carlos_tedex
testei sua função e realmente ela deixou apenas os caracteres válidos. Mas ainda sim não consegui inserir um espaço em branco no local do caracter estranho. Alterei sua função para qdo for detectado um caracter que não contiver no if ele move espaço. Mas mesmo assim não foi. Confere ai:
for x := 1 to Length(s) do
if s[x] in [´a´..´z´,´A´..´Z´, ´0´..´9´, ´,´, ´;´, ´ ´, ´/´, ´\´, ´|´, ´"´,
´-´, ´=´, ´(´, ´)´, ´{´, ´}´, ´[´, ´]´, ´.´, ´:´] then
sAux := sAux + s[x]
else
sAux := sAux + 32;
mas agradeço a atenção... valew
Gostei + 0
20/11/2007
Vitor Alcantara
for x := 1 to Length(s) do
if s[x] in [´a´..´z´,´A´..´Z´, ´0´..´9´, ´,´, ´;´, ´ ´, ´/´, ´\´, ´|´, ´"´,
´-´, ´=´, ´(´, ´)´, ´{´, ´}´, ´[´, ´]´, ´.´, ´:´] then
sAux := sAux + s[x]
else
sAux := sAux + ´ ´; //caractere em brancoGostei + 0
21/11/2007
Carlos_tedex
valew
Gostei + 0
21/11/2007
Carlos_tedex
Observe que o caracter estranho esta na posição 305
[url]http://www.pro-controll.com.br/teste.zip[/url]
valew
Gostei + 0
21/11/2007
Luciano.lirio
var
s: String;
x: Integer;
begin
s := ´José´+#08+´da´+10+´Silva´+13+´Sauro´;
for x := 1 to Length(s) do
if not (s[x] in [´a´..´z´,´A´..´Z´, ´0´..´9´, ´,´, ´;´, ´ ´, ´/´, ´\´, ´|´, ´"´,
´-´, ´=´, ´(´, ´)´, ´{´, ´}´, ´[´, ´]´, ´.´, ´:´]) then
s[x] := ´ ´;
ShowMessage(s);
Gostei + 0
21/11/2007
Comodelphi
abcs.
Gostei + 0
21/11/2007
Luciano.lirio
pelo que vi no arquivo, o problema está na quebra das linhas, note que a terceira linha não está com quebra e o código do pedido está na mesma linha, as demais linhas estão com o código do pedido na próxima linha.
Gostei + 0
21/11/2007
Comodelphi
Gostei + 0
21/11/2007
Luciano.lirio
function LimpaInvalidos(const _Str: String): String; var X: Integer; begin Result := _Str; for X := 1 to Length(Result) do if (Result[X] in [13]) then Result[X] := ´ ´; end; function PartStr(const _Str: String; const _Chr: String; const _NumPart: Integer): String; var I: Integer; strTemp: String; begin strTemp := _Str; for I := 1 to _NumPart do begin if Pos(_Chr,strTemp) > 0 then begin Result := Copy(strTemp,1,Pos(_Chr,strTemp)-1); Delete(strTemp,1,Pos(_Chr,strTemp)); end else begin Result := strTemp; strTemp := ´´; end; end; end; procedure TForm1.Button1Click(Sender: TObject); var ArqEnt: TextFile; Linha: String; Campos: Array[1..20] of String; begin Reset(ArqEnt,´C:\Downloads\TESTE.txt´); while not eof(ArqEnt) do begin ReadLn(ArqEnt,Linha); // Verifica se a linha começa com 1 caso contrário cancela o processamento. if Linha[1] <> ´1´ then raise Exception.Create(´Arquivo Inválido.´); Campos[01] := PartStr(Linha,´;´,01); Campos[02] := PartStr(Linha,´;´,02); Campos[03] := PartStr(Linha,´;´,03); Campos[04] := PartStr(Linha,´;´,04); Campos[05] := PartStr(Linha,´;´,05); Campos[06] := PartStr(Linha,´;´,06); Campos[07] := PartStr(Linha,´;´,07); Campos[08] := PartStr(Linha,´;´,08); Campos[09] := PartStr(Linha,´;´,09); Campos[10] := PartStr(Linha,´;´,10); Campos[11] := PartStr(Linha,´;´,11); Campos[12] := PartStr(Linha,´;´,12); Campos[13] := PartStr(Linha,´;´,13); Campos[14] := PartStr(Linha,´;´,14); Campos[15] := PartStr(Linha,´;´,15); Campos[16] := PartStr(Linha,´;´,16); Campos[17] := PartStr(Linha,´;´,17); Campos[18] := PartStr(Linha,´;´,18); Campos[19] := LimpaInvalidos(PartStr(Linha,´;´,19)); Campos[20] := PartStr(Linha,´;´,20); end; CloseFile(ArqEnt); end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)