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.
não pode dar o replace pelo ^M mesmo?
ou precisa ser dinâmico?
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).
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}", "");
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}", "");
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.