Remover caractere não visível

Olá, estou precisando exportar registros do banco e tenho que formatar um txt, apenas 3 registros deram problemas, fui ver o que era e descobri que cadastraram a descrição com ENTER e ele quebra a formatação do txt.

Exemplo bom:
“Estou com esta dúvida”

Exemplo ruim:
“Estou com
esta
duvida”

Não sei ainda como identificar o enter. Como faço para remover de um texto caracteres não visíveis como o ENTER por exemplo, e trocá-lo por espaço em branco ?

Ola…

cara, vc não consegue colocar algum caracter que indique o final de cada texto?

Procure referencias pelo metodo replace da classe String.
O ‘ENTER’ é equivalente ao ‘\n’ ou “\r\n”, isso varia de como foi implementado.

Ex:
System.out.println(“Oi, tudo\r\n bom?”);
Out:
Oi, tudo
bom?

System.out.println( “Oi, tudo\r\n bom?”.replaceAll("\r\n", “”) )
Out:
Oi, tudo bom?

Valeu aí, mas acho que não entenderam o problema…
Mas já resolvi, fiz isso:

    private String removerEnter(String str) {
		StringBuffer buf = new StringBuffer();
		char[] c = str.toCharArray();

		for (int i = 0; i < c.length; i++) {
			if (c[i] >= 32 && c[i] <= 126) {
				buf.append(c[i]);
			}
		}

		return new String(buf);
	}

O intervalo de 32 à 126 são todos os caracteres visíveis

Na verdade, vc não entendeu a solução.
Isso que vc fez é um gato gigantesco. Então, tente usar str.trim()

opa mais alguns caracteres ocultos

\n nova linha
\t tab
\r retorno do carro

Opa Lucas, a solução que tinha criado tinha falhas, ç ã À eram “comidas” na hora de gerar o txt.

E cara esqueci de dizer mas estou com java 1.3 :frowning:

replace all ? o que é isso hehe, infelizmente o replace do 1.3 só aceita char, aí eu vou trocar o \r e \n por espaço em branco ? Assim ficaria com 2 espaços no arquivo txt.

Mas aproveitei a idéia e troquei o intervalo de 32 à 126 por \r e \n, agora está montando o txt corretamente, lasca que eram só 3 registros no meio de 140000.

Mas valeu aí

Ah, sim.
Então é mais fácil ainda.
Se vc lê o arquivo em bytes vc pode usar este construtor

byte buffer[];
in.read( buffer );
System.out.println( new String(buffer, "UTF-8").trim() );

Caso não funcione, troque o “UTF-8” por “ISO-8859-1”.
Este construtor da classe String é desde o java 1.1.

Não é uma boa solução trocar um intervalo de caracteres.

Obs: Se vc usar uma Classe Reader vc irá lê o arquivo em array de char, mas se vc trocar por BufferedInputStream vc irá ler um array de bytes, então tem como usar a solução descrita acima. O que ocorre, é quando vc trata como ‘char’ o dado é interpretado, e dependendo como o arquivo foi salvo a interpretação falha, por isso caracteres especiais estão vindo corrompidos.