Remover ^M de String

5 respostas
D

Boa tarde!
No unix, ao abrir um arquivo, é exibido ^M no início de cada linha.
Preciso fazer um processamento neste arquivo e preciso tirar esse Ctrl M.

Li cada linha deste arquivo e, em cada linha tentei fazer deste modo abaixo, mas não deu certo.

linha.replace(System.getProperty("line.separator"), "");

Algué já passou por essa situação e saberia me dizer o que fazer?
Obrigado.

5 Respostas

Rodrigo_Sasaki

não pode dar o replace pelo ^M mesmo?
ou precisa ser dinâmico?

E

O line.separator é “\n” em Unix e “\r\n” em Windows. O seu problema é que você tem dados gerados em uma aplicação Windows, e você precisa só remover os ‘\r’. No seu caso, você usaria:

linha = linha.replace ("\r", "");

Cuidado - o método “replace” não modifica a string mas simplesmente retorna a string processada. Muita gente “quebra” a cara porque acha que replace muda a string, o que não é verdade. Strings são imutáveis (mas as variáveis do tipo String não são imutáveis).

D

Testei isso tudo, e no unix ta quebrando a linha em várias depois de processar, ja no Windows sai tudo certo.
Não sei o que pode ser.

linhaEntrada.replace(System.getProperty("line.separator"), "");
        linhaEntrada.replace("\\n", "");
        linhaEntrada.replace("^M", "");
        linhaEntrada.replaceAll("\\p{Cntrl}", "");
E

Eu lhe falei que replace não modifica sozinha a variável original, não?
Provavelmente

linhaEntrada = linhaEntrada.replaceAll("\\p{Cntrl}", "");

funcionaria (limpa realmente tudo), não

linhaEntrada.replaceAll("\\p{Cntrl}", "");
D

Sim, apesar de não ter postado anteriormente, estou atribuindo o resultado do replace a variavel.
Bom até o momento não sei o que pode ser o problema, talvez não tenha nada a ver com o CTRL M.
Obrigado pela ajuda de todos.

Criado 14 de dezembro de 2011
Ultima resposta 14 de dez. de 2011
Respostas 5
Participantes 3