Barra invertida em arquivo de texto

Oi gente!
Eu estou fazendo um método que procura \ em um arquivo de texto e substitui por /
Eu estou usando a condição:

if (linha.contains("\")) {
            linha2 = linha.replace("\", "/");
}

Porém ele não consegue identificar o “” já que no meu arquivo ele não vem como “\”.
Álguem sabe como solucionar esse problema?
Obrigada.

Oi Marina,

O que acontece?
O código abaixo funciona normalmente:

[code]// no arquivo esta \teste1\teste2\teste3\ que vai ser representado pela String
String linha = “\teste1\teste2\teste3”;
linha = linha.replace( “”, “/” );

System.out.println( linha );[/code]
Você não precisa verificar se existe o valor que vai ser alterado, pq caso o método replace falhe em achar o que foi pedido, ele simplesmente não vai alterar nada.
Vc não precisa atribuir linha a linha2, use a mesma variável.

[]´s

olá Marina, de uma pesquisada em caracteres de escape. Quando em uma string vc coloca uma barra \ indica que vc vai usar um caratere de escape, os mais comuns são

Escape Sequence Description
\t Insert a tab in the text at this point.
\b Insert a backspace in the text at this point.
\n Insert a newline in the text at this point.
\r Insert a carriage return in the text at this point.
\f Insert a formfeed in the text at this point.
’ Insert a single quote character in the text at this point.
" Insert a double quote character in the text at this point.
\ Insert a backslash character in the text at this point.

retirado de http://download.oracle.com/javase/tutorial/java/data/characters.html

Então se vc colocar uma , é necessario colocar algum caractere depois.

Veja esse código

String s ="oi \ mundo";
		
System.out.print(s);  // imprime oi / mundo

enquando

String s ="oi \ mundo";
		
System.out.print(s);  // dá erro de compilação

Observação: se vc está usando isso para manipular diretorios, caminhos use o File.separator, pois ele cuida da diferença de caminho com \ do windows e linux.
http://download.oracle.com/javase/1.5.0/docs/api/java/io/File.html#separator

Davidbuzatto o meu código funciona normalmente se a minha string tiver o “\”, porém como se trata de um arquivo de texto contendo apenas uma barra invertida “”, então dâ erro de compilação como disse o tinorberto, e é exatamente isso que eu quero solucionar: uma forma de identificar apenas uma barra invertida \ contida na string que contem o texto do meu arquivo.
Deu pra entender? Eu não consegui encontrar nada pela net.

Não estou entendo, poste seu código para a gente olhar o que esta acontecendo…

É assim:

String linha="x<-2", linha2="";
if (linha.contains("\")) {
            linha2 = linha.replace("\", "/");
        }

A String linha representa uma linha de um arquivo de texto, que consiste de um código do VisuAlg. Eu quero traduzir isso para “x<-2/1”, porém o Java não consegue identificar o símbolo “”, já que este não está no formato “\”.

Utilize uma variável String contendo a barrra invertida.
Exemplo:

		String barra="\";
		String linha="x<-2" + barra + "1", linha2 = "";   
		if (linha.contains(barra)) {   
		            linha2 = linha.replace(barra, "/");   
		        }

Oi Marina,

Então, no Java e em diversas outras linguagens, a barra invertida (ou contra-barra) é usada na composição de caracteres de escape.
Por exemplo, um caractere de nova linha é o ‘\n’ (barra invertida + n). Uma tabulação é ‘\t’ (barra invertida + t). Você consegue perceber que a barra invertida é um caractere especial? Ela indica que o próximo caractere tem um significado diferente do literal (veja a lista que o tinoberto postou).

Sendo assim, quando vc precisa do caractere de barra invertida, vc precisa dar o escape nele, da mesma forma que faz com o ‘n’ para nova linha e o ‘t’ para tabulação, ficando então ‘\’.
Uma String que vai conter uma barra invertida, deve ter o ‘\’.

Se vc colocar só uma ‘’ e na frente dela não haver nenhum caractere permitido (b, n, t, , etc.) o compilador vai reclamar.

Resumindo: ‘\’ em uma String é igual a ‘’.

Entendeu? Veja o exemplo dos colegas e se ainda tiver dúvida, poste novamente ok?

[]´s

Muito obrigado todos do forum!!!
Valeu pelas dicas, vou usál-las para o meu trabalho.

Disponha Marina :wink:

[]´s