Pessoal,
boa noite.
Tenho a seguinte situação:
Eu tenho um arquivo TXT no formato abaixo:
180211 000020 170211 CTMG SEL206W JOB YEBJD910 YEBGD910/79506 OID=QQB5S ABENDED CC S04C STEP ST01 /
E neste arquivo, preciso filtrá-lo deixando desta forma:
180211 000020 170211 YEBGD910 79506 ABENDED CC S04C
Quer dizer, preciso eliminar algumas informações que estão no meio das informações que são sujeiras.
Como posso fazer isso ?
Obrigado,
[quote=brunosardao]Pessoal,
boa noite.
Tenho a seguinte situação:
Eu tenho um arquivo TXT no formato abaixo:
180211 000020 170211 CTMG SEL206W JOB YEBJD910 YEBGD910/79506 OID=QQB5S ABENDED CC S04C STEP ST01 /
E neste arquivo, preciso filtrá-lo deixando desta forma:
180211 000020 170211 YEBGD910 79506 ABENDED CC S04C
Quer dizer, preciso eliminar algumas informações que estão no meio das informações que são sujeiras.
Como posso fazer isso ?
Obrigado,[/quote]
N-maneiras a gambiarra!
String suja = "180211 000020 170211 CTMG SEL206W JOB YEBJD910 YEBGD910/79506 OID=QQB5S ABENDED CC S04C STEP ST01 /";
suja = suja.replace(" "," ");
suja = suja.replace(" "," ");
String[] textoSeparadoPorEspaco = suja.split(" ");
String minhaString = textoSeparadoPorEspaco[0] + " " +textoSeparadoPorEspaco[1] + " " + textoSeparadoPorEspaco[2] + " " + textoSeparadoPorEspaco[6] + " " + textoSeparadoPorEspaco[7].split("/")[1] + " " + textoSeparadoPorEspaco[9] + " " + textoSeparadoPorEspaco[10] + " " +textoSeparadoPorEspaco[11] ;
dreampeppers99 ,
Mais uma vez, obrigado por todo seu auxilio…
No caso, o meu TXT possui tipo 1000 linhas, porisso, como poderia fazer para que todas as linhas fosse alteradas, sem que precisasse armazenar a informação na string igual você mostrou ?
Digo isso, pois o arquivo possui as colunas fixas, mas os dados não…
valeu…
cara, eu to com muuuuuuuuuuita preguissa de escrever código agora, tarde difcil, mas da uma olhada na classe StringTokinizer
Der Meister
Sem crise,
Valeu pelo toque, vou fazer uma leitura sobre a StringTokinizer…
e ae, teve algum resultado? acha que pode servir?
[quote=brunosardao]dreampeppers99 ,
Mais uma vez, obrigado por todo seu auxilio…
No caso, o meu TXT possui tipo 1000 linhas, porisso, como poderia fazer para que todas as linhas fosse alteradas, sem que precisasse armazenar a informação na string igual você mostrou ?
Digo isso, pois o arquivo possui as colunas fixas, mas os dados não…
valeu…[/quote]
Bem é uma leitura de arquivos… :\ Recomendo FORTEMENTE a leitura da apostila FJ 21 - Java e orientação a objetos é MUITO BOA. Segue o código.
FileReader legendaAModificar = new FileReader("/home/root/meuarquivo.txt");
BufferedReader bf = new BufferedReader(legenda);
try {
String linha = bf.readLine();
while (linha != null){
linha = linha.replace(" "," ");
linha = linha.replace(" "," ");
String[] textoSeparadoPorEspaco = suja.split(" ");
String minhaString = textoSeparadoPorEspaco[0] + " " +textoSeparadoPorEspaco[1] + " " + textoSeparadoPorEspaco[2] + " " + textoSeparadoPorEspaco[6] + " " + textoSeparadoPorEspaco[7].split("/")[1] + " " + textoSeparadoPorEspaco[9] + " " + textoSeparadoPorEspaco[10] + " " +textoSeparadoPorEspaco[11] ;
System.out.println(minhaString);
String linha = bf.readLine();
}
Der Meister
Fiz um teste com a StringTokenizer, mas acredito que posso estar fazendo alguma coisa errada:
String leitor = null;
StringTokenizer separador;
String process;
String hora;
String odate;
String sistema;
String sujeira;
String sujeira1;
String sujeira2;
String job;
while( (leitor=reader.readLine() ) != null ) {
if (leitor.contains("ABENDED CC S04C")){
separador = new StringTokenizer(leitor);
process = separador.nextToken();
hora = separador.nextToken();
odate = separador.nextToken();
sistema = separador.nextToken();
job = separador.nextToken();
sujeira = separador.nextToken();
sujeira1 = separador.nextToken();
sujeira2 = separador.nextToken();
job = separador.nextToken();
System.out.println(process + " " + hora.substring(2) + " " + odate +
" " + sistema.substring(4) + " " + sujeira.substring(3) + " " + sujeira1.substring(8) + " " +
sujeira2.substring(0) + " " + job.substring(8));
Eu fiz desta forma, pois mesmo usando um separador, ainda tenho que filtar mais informações, porém deste jeito que fiz, ele obrigatoriamente pega colunas que eu não preciso.
Será que tem algum forma de não aparecer as colunas que preciso ??
dreampeppers99
Mais uma vez obrigado também pela ajuda, vou olhar seu código e fazer um teste aqui,.
Se essas linhas do aquivo possuem um padrão, sempre o mesmo n° de espaços e o mesmo n° de “palavras”, então você pode usar o método split() da classe String.
Esse método retorna um array, e nesse array cada posição terá cada “palavra” entre cada espaço. Dai você só vai precisar dizer qual posição do array que precisa utilizar.
É bem simples isso. Mas desde que seu arquivo possua um padrão como eu falei.
Algo bem parecido com o que o dreampeppers99 postou acima. Eu não tinha percebido.
romarcio
Obrigado, vou fazer alguns testes e surgindo novas dúvidas volto a postar…
Obrigado a todos pelo auxilio…