replaceAll não está funcionando... e agora?

Pessoal beleza?

Se alguém tiver alguma dica para me salvar deste problema, ficaria muito agradecido.

No caso onde estou utilizando o replaceAll, aparentemente ele está tratando um caracter como algo especial, segue um exemplo:

String str1 = "teste de string (comentario)"; String str2 = null; str2 = str1.replaceAll("(comentario)","");

ao exibir a “str2”, o conteúdo tem o seguinte texto: “teste de string ()”.

Gostaria que inclusive os parenteses fossem removidos da string. Alguém tem uma dica?

Abraços a todos.

cara, acho que assim funciona:

String str1 = "teste de string (comentario)"; String str2 = null; str2 = str1.replaceAll("\(comentario\)","");

Cara… valeu, vou testar e depois comento aqui.

Aí… o lance que você passou funcionou direitinho, valeu pela força.

o metodo replaceAll() serve para expressoes regulares, se vc simplesmente quiser subistituir todas as ocorrencias de uma substring por outra, use o metodo replace(), que funciona normal…

String str1 = "teste de string (comentario)";
String str2 = null;
str2 = str1.replace("(comentario)",""); 

vale lembrar que o metodo replace nao substitui apenas a primeira ocorrencia (como aparenta por haver um metodo chamado replaceAll), se tivessimos:

String str1 = "teste de string (comentario)(comentario)(comentario)(comentario)";
String str2 = null;
str2 = str1.replace("(comentario)",""); 

o valor de str2 seria "teste de string "

Legal Felipe, valeu pela explicação.

Olá!!

Desculpa Felipe, mas este código seu não funciona. O replace é só para subtituição de um caracter, já o replaceAll é para uma cadeia de caracteres, isto é, uma string ou substring. Assim, str2 = str1.replace("(comentario)",""); deveria ser deixado como str2 = str1.replaceAll("(comentario)",""); mesmo! (Para Java v1.4.2)

Agora uma dúvida:

Tenho um campo declarado desta maneira: TextField txtDiretorio = new JTextField(); e que pega o valor através de um txtDiretorio.getText().

Usando assim:

aplicacao = new Aplicacao(id,txtAplicacao.getText(),txtDiretorio.getText()); o valor dele é passado para um outro programa que o recebe assim:

public Aplicacao(int cod, String nome, String dir){...}Ou seja, uma String.

Este valor é guardado em um BD (MySQL). Porém, uma path que é dada por “D:\july” é salva como “D:july” ou no caso de “D:\july\teste” teríamos “D:july este”, pois barra simples deve ser usada como \ e \t significa tab… Como faço pra este trocar a \ da String por \ antes de enviar o valor da String para o BD e poder gravá-lo corretamente? Note que como a String vem do JTextField(), ela aparece como “D:\july” e não como “D:\july” como faríamos em uma declaração normal de String.

Para a gravação no BD aparece na console:

Update DB vetor colNames:[codigo, nome, diretorio] vetor colValues:[5, teste5, D:\july] vetor de clausulas [codigo = ] vetor de parametros :[5] updateSQL : UPDATE Aplicacao SET codigo = 5,nome = 'teste5',diretorio = 'D:\july' WHERE codigo = 5Embora já grave errado no BD… (D:july)
E quando quero trazer o valor de volta vem:

sql para findlike: SELECT * FROM Aplicacao WHERE nome = 'teste5' dir=D:july
Já tentei de vários modos usar replace ou replaceAll, mas em nada resultou.

Alguém sugere algo?

Valeu!!

July

iae pessoal, blz?
porfavor ajudem um novato
pra q serve o replace e o replaceAll :cry:
qual a funcao deles
valeu

Basicamente o replace serve para você substituir “um” caracter em uma cadeia de caracteres.
O replaceAll serve para substituir uma cadeia de caracteres em outra.

tem com alguem me da um exmplo um pouco mais pa iniciante
eu ainda naum peguei muito bem a ideia :oops: hehe

[quote=“C3pO”]tem com alguem me da um exmplo um pouco mais pa iniciante[/quote]Acho que com um exemplo de código talvez esclareça mais…

public class Teste { public static void main(String[] args) { String teste="Este é um teste de subtituição ..."; System.out.println(teste); teste = teste.replace('e', '*'); System.out.println(teste); teste = teste.replaceAll("subtituição", "replace e replaceAll"); System.out.println(teste); } }
A saída do pgm é a seguinte:

Este é um teste de subtituição ... Est* é um t*st* d* subtituição ... Est* é um t*st* d* replace e replaceAll ... Beleza?
replace = 1 caracter, replaceAll = cadeia de caracteres, strings, substrings…

Vamos ver seu meus exemplos podem ajudá-lo então:

str1 = 'junho'; str2 = str1.replace('n','l');

str2 terá julho

str1 = 'junho'; str2 = str1.replaceAll('nho','lho');

str2 terá julho também, mas note que você substituiu uma cadeia inteira ‘nho’ por ‘lho’

fui iluminado aeeeeeeehehehe
valeu pela ajuda :grin: