Problema com o metodo replace de String

se eu fizer isso ae e mandar uma String como ex. “60.547-810” ele nao vai alterar nada.

mas se eu fizesse assim

dava certo, mas nao é bem o que eu quero, pq quero tirar tanto o “.” quanto o “-” , e pode ser que eu venha precisar usar em mais lugares tal metodo

alguem sabe o pq que nao ta dando certo?

off-topic
o replaceAll faz basicamente oq?

Bom Dia,
você está subistituindo, mas não esta guardando em variável nenhuma e acaba retornando o mesmo valor de CEP.

tente colocar uma variavel recebendo o CEP (ex:ceMod=cep.replace(".",""); ou this.cep=cep.replace(".",""); ) e retorne essa variável.

Abraços,
Thiago Alvares

SCJP 1.4

realmente eh isso q nosso colega disse, String sao imutaveis e o que vc fez irá criar uma nova String mas ela ficará solta pra resolver coloque uma variavel para receber o endereço da nova String na memoria!!

Ainda nao deu certo

nao deu certo esse de cima:

esse aqui tentei assim ( q nao eh o que eu quero) e tbem nao deu certo

//Estou usando uma classe especifica chamada Keyboard, com essa
//classe fica mais faciltrabalhar com o I/O de dados
//enquanto a variavel para receber o cep realmente funciona mas vc
//pode retornar direto ja com o metodo replace isso minimiza o seu codigo ao inves de criar duas variaveis String para receber o cep que no caso seria para a troca do ‘.’ e do ‘-’ blzzzz;
//Bom nao sei se vc ja consegui resolver o seu problema
//Fiz este codigo e modifiquei algumas coisas blzzzz
//se ajudar …

class Teste {

public static String quebraCep(String cep){ 
return cep.replace('.',' ').replace('-',' ');
}

public static void main(String[] args) { 
String recebe_cep;
System.out.println("Entre com o CEP:");
recebe_cep = Keyboard.readString();
System.out.println(quebraCep(recebe_cep));
} 

}

// a classe “Keyboard” eu posso enviar por email
//farô

//olá !!!
// bom tente este sem a classe Keyboard, fiz uma troca
//no metodo quebraCep
//ok
//Abraços

import javax.swing.JOptionPane;

class Teste {

public static String quebraCep (String cep) {
return cep.replace(’.’,’ ‘).replace(’-’,’ ');
}

public static void main(String[] args) {
String linguagem = JOptionPane.showInputDialog(“Entre com o Nome a ser Invertido”);
JOptionPane.showMessageDialog(null,quebraCep(linguagem));
}
}

Boa Tarde,

o erro além de o cep não ser referenciado é que as suas aspas devem ser substituidas por plics pois quando você usa o método replace, você está lidando com caracteres.

replace([color=“red”]’-’,’’[/color]);

Abraços,
Thiago Alvares

SCJP 1.4

ate agora ta dando pau :frowning:

O codigo que postei acima sem a classe “Keyboard” esta funcinando, so nao sei se é realmente isso que vc quer, mas pelo que andei olhando acho que é isso mesmo…blzzzz

tenta rodar esse codigo…

Farô

tiago@hortela:~/testes$ javac Teste.java
Teste.java:8: error: Invalid character literal.
return cep.replace(’.’,’’).replace(’-’,’’);
^
1 error

cara se colocar os chars vazios dao pau :frowning:
ex: 60.347-810
e se eu colocar com espacos vai ficar a string ex: 60 347 810, e o q eu queria era 60347810

pois eh, ao contrario de string, nao existe o char vazio…

O que eu quero eh o seguinte:

fazer um metodo que receba uma String ( que seria um CNPJ, CPF ou CEP), retire tudo q nao for numero dela e que nao deixe os espacos em branco.

o que vcs me dizem ?

cara, nao eh o metodo mais rapido, e sem duvida nao eh o mais simples, mas eu pessoalmente nunca usei o split(), entao tenta fazer assim:

String cpf = "999.999.990-99";
String temp = "";
for(int i = 0; i < cpf.length(); i++) {
  if(Character.isDigit(cpf.charAt(i))) {
     temp += cpf.charAt(i);
  }
}
//temp = 99999999099

espero ter ajudado

Bom Dia,
usa o indexOf.
ele apaga o caracter que vc não quer.

tô meio ocupado agora mas daqui a pouco eu explico melhor.

Thiago Alvares

SCJP 1.4

Usar

  String temp = cpf.replace('-', (char)0).replace('.', (char)0);

O replace vai eliminar o caractere, pois o char 0 é nulo.

Essa é a prova que velhos truques do Delphi se tornam novos no Java :wink:

Atenciosamente,
Bento Monteiro
SCJP

depois vo testar ae pra ver como que fica :stuck_out_tongue:

//Olá, cara eu fiz este codigo aki e deu certo , agora esta saindo do jeito que vc quer blzzzz
//so que aki nao precisamos usar mais o metodo replace , pois o metodo replace
//deve conter um unico caracter, por exemplo ->> ‘’ <<- nao é caracter , agora->> ’ ’ <<- sim ok
//aki estamos trabalhando com tokens é
//simplesmente dizer pra ele o que vc gostaria de comparar que no caso foi o ". e o - " ok
//farô

import javax.swing.JOptionPane;
import java.util.*;

class Teste1 {

public static String quebraCep(String cep){

String [] concat = new String [3];
int i;

StringTokenizer c=new StringTokenizer(cep,".-");

for(i=0;i&lt;3;i++)
{
concat[i] = c.nextToken();	
}	

return concat[0]+concat[1]+concat[2];
}

public static void main(String[] args) {
String linguagem = JOptionPane.showInputDialog(“CEP”);
JOptionPane.showMessageDialog(null,quebraCep(linguagem));
}
}

pkall,

Não leva a mal não mas o StringTokenizer não foi feito para isso. Sem contar que esse código é deselegante.

Atenciosamente,
Bento Monteiro
SCJP

Cara este metodo tambem nao funciona do jeito que ele quer , isso tambem vai retornar um caracter so que nullo.

String temp = cep.replace(’-’, (char)0).replace(’.’, (char)0);

Vai funcionar sim. Pode testar

public class Teste2 {

public Teste2() {
}
 
public static void main(String[] args) {
  String cpf = "999.999.990-99"; 
  String temp = cpf.replace('-', (char)0).replace('.', (char)0);
  System.out.println(cpf);
  System.out.println(temp);
}

}

Vai imprimir 99999999099

Atenciosamente,
Bento Monteiro
SCJP