Retirar caracter especial da leitura de um arquivo txt

Pessoal,

Não consegui me expressar melhor no campo assunto do tópico mas vou tentar explicar.

To criando um programinha pra fazer a leitura de um arquivo txt. Até aí consegui fazer a leitura deste arquivo, só que tenho que tirar o “;” de cada linha. Fiz um código aqui e até tirou mas preciso melhorar mas estou precisando de uma ajudinha.

Pra melhorar, segue arquivo txt:

AAA ;5103542   ;BHE ;33320392  ;5 MBPS         ;05;00003181872974;OK                                                                    
BBB ;5108920   ;BHE ;33441151  ;5 MBPS         ;05;00003181872983;OK                                                                    
CCC ;5110488   ;BHE ;33833527  ;5 MBPS         ;05;00003181872992;OK                                                                    
DDD ;5110553   ;BHE ;33831204  ;5 MBPS         ;05;00003181873009;OK                                                                    
EEE ;5111763   ;BHE ;34417800  ;5 MBPS         ;05;00003181873018;OK                                                                    
FFF ;5112206   ;BHE ;32961465  ;5 MBPS         ;05;00003181873027;OK                                                                    
GGG ;5115725   ;BHE ;34619962  ;5 MBPS         ;05;00003181873036;OK                                                                    
HHH ;5118343   ;BHE ;33733412  ;5 MBPS         ;05;00003181873045;OK   

Eu tenho que tirar esses “;” e depois quebrar essas linhas para que elas virem colunas. Tipo:
Linha 1: [AAA], [5103542], [BHE], [33320392], [5 MBPS], [05], [00003181872974], [OK]

Acima tenho 8 campos ou colunas.

Dúvida nº1: Como faço pra melhorar o código pra retirar os “;”?
Dúvida nº2: Como faço pra quebrar essas linhas e transformá-las em campos?

Segue meu código:

public class LerArquivo {

	
	public static void main(String[] args) {
		
		LerArquivo la = new LerArquivo();
		try {
			
			la.ler();
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		

	}

public void ler() throws IOException{
		FileReader reader = new FileReader("D:\\STC0_A001D_MIGRADOR_S4801020110122[1].txt");
		BufferedReader buf = new BufferedReader(reader);
		
		String linha;
		String newString = "";
		
		while ((linha = buf.readLine()) != null){
			
			for (int i=0; i<linha.length();i++){
				if(linha.contains("OK")){
					if(linha.charAt(i) == ';'){
						newString += " ";
					} else {
						newString += linha.charAt(i);
					}
				}
			}
			
			System.out.println(newString);


		}
		reader.close();
	}

OBS: Na linha de código “if(linha.contains(“OK”))” é pq nesse arquivo txt, tem outros status e eu quis filtrar só por OK pra fazer a leitura.

Desde já agradeço.

Tenta utilizar o método split() da classe String

Eu separaria a leitura da manipulação do arquivo, e no lugar de concatenações com Strings, utilizaria o StringBuilder :smiley:

Método .replace(";","");

Se usar o método replace vai perder as definições dos seus campos.
Use o split.

Usei o split. Ficou desta forma:

public void lerLinha() throws IOException{
		FileReader reader = new FileReader("D:\\STC0_A001D_MIGRADOR_S4801020110122[1].txt");
		BufferedReader buf2 = new BufferedReader(reader);
		
		String linha2;
		String array[] = new String[8];
		
		while ((linha2 = buf2.readLine()) != null){
			if (linha2.contains("OK")){
				array = linha2.split(";");
				
				AppCircuito circ = new AppCircuito();
				circ.setLocalidade(array[0]);
				circ.setCircuito(array[1]);
				circ.setVelocidade(array[4]);
				
				System.out.println(circ.getLocalidade());
				System.out.println(circ.getCircuito());
				System.out.println(circ.getVelocidade());

			}
		}
		
		reader.close();
	}

Se verem lá no início do tópico (arquivo txt), tem um campo que é assim: “5 MBPS”.
Gostaria que na saída ele fosse assim: “5M”.

Já usei o substring(), trim(), tentei fazer um gambiarrazinha com concat() mas não deu certo. Alguém tem uma idéia de retirar o espaço entre o “5” e o “MBPS” mas tirando BPS e fazendo com que na saída mostre “5M” por exemplo??

Valeu galera!!

texto.replace("5 MBPS", "5M"); :?:

Alterei uma linha do prog. mas ainda dá uns erros…

De: circ.setVelocidade(array[4]);

Para: circ.setVelocidade(array[4].substring(0, 3).trim().concat("M"));

Se alguém tiver alguma idéia agradeço.

String [] vel = array[4].split(" ");
circ.setVelocidade(vel[0] + vel[1].charAt(0));

Consegui aqui. Peguei a idéia do drigo. No meu método set da classe AppCircuito fiz dessa forma:

public void setVelocidade(String velocidade) {
		this.velocidade = velocidade.replace(" MBPS", "M");
	}