nao entendi muito,agora c vc quizer q saia uma string => \ ,tem q colocar assim =>\ ,para cada 2 barras significa uma!!!,pos na hora de execucao a MV olha aquela string e ve q tem uma barra e ve o q vem depois por exemplo c for \n e quebra de linha, tem vairos ,nao sei c matei sua duvida?
replaceAll requer uma expressão regular. O problema é que “” é um caracter especial para expressões regulares. Se você quiser usá-lo em uma expressão regular para representar o próprio “”, deve duplicá-lo:
“\” (se for uma string no programa Java, você sabe que tem de duplicar o duplicado, e então tem de usar “\\”)
Nenhum dos dois respondeu, sinto muito ^^. Olhando o código não deve ficar tão dificil matar minha duvida…
Vamos la:
tenho a string Substituir " por \"
no console ela fica assim: Substituir " por "
A frase ja diz minha intenção, quero substituir qualquer ocorrencia de " por “, então eu tento usar o replaceAll(”","\""), mas ele não funciona e, usando o replace(""","\"") da mesma maneira, funciona. A diferença é que o replaceAll usa String e o replace usa CharSequence.
Eu sei que “” na string é “\” e que " é "… Mas quero saber porque o método replace substitui corretamente e o replaceAll, não!
Deu pra entender?
Diz o Javadoc. Ou seja o replace substitui CADA substring dessa string que é equivalente com a string passada no target, enquanto que o replaceAll usa uma expressão regular e não uma String.
Simplificando no replace se você colocar “a+”. Ele vai substituir toda ocorrêcia da String “a+”, usando replaceAll ele vai avaliar isso como uma expressão regular e vai substitiur tudo que comçear com a e tiver mais de 1 caracter após o a.
Entendeu a diferença?
Agora deu pra entender melhor! Mas me explica uma coisa então! Pra que são usadas as aspas " em expressão regular? Achei que eram interpretadas como string literal mesmo, assim como quando se poe um a, por exemplo, e que colocar “”*" seria 0 ou mais ocorrencias de aspas…
Eu ja entendi, a diferença entre o replaceAll e o replace é que um usa String com expressão regular e o outro usa CharSequence, fazendo a substituição literal…
Certo, entendi que um usa expressão regular e o outro não, mas realmente faz sentido que ao procurar por " como expressão regular substituindo por \", o comando deveria ter feito o que você comentou. Ou será que eu me confundi todo e não estou raciocinando corretamente? oO’
Afinal, qual seria a forma correta para se trocar " por " usando replaceAll?
Elas são interpretadas com " porque precisam ser passadas de alguma forma e a melhor forma de você passar uma expres~são regular é com String, até porque o relacionamento regex/string é muito intimo.
Espero te ajudado.
No caso de replaceAll, você deve prestar atenção ao segundo parâmetro. No segundo parâmetro, o caracter $ tem um significado especial, e normalmente é seguido por um dígito. Ele serve para ser substituído por um dos grupos que bateram com o primeiro parâmetro.
No seu caso (em que você simplesmente queria trocar pelo símbolo de real), você deve usar um “\” antes do $. Ou seja,