String.replace

4 respostas
danielti

Pessoal,

Eu fiz a seguinte função cujo objetivo é remover alguns caracteres de uma string e substituir por "_":
public String monta_nome(String nome) {
        String novo_nome = nome;

        novo_nome.replace("(", "_");
        novo_nome.replace(")", "_");
        novo_nome.replace("[", "_");
        novo_nome.replace("]", "_");
        novo_nome.replace(":", "_");
        novo_nome.replace(" ", "_");
        novo_nome.replace("/", "_");
        novo_nome.replace("", "_");

        String char_inicial = nome.substring(0, 1);
        Integer inicial;
        try {
            inicial = Integer.parseInt(char_inicial);
            novo_nome = "Ip_" + novo_nome;
        } catch (NumberFormatException nfe) {
            inicial = 0;
        }
        System.err.println(nome + "=========>" + novo_nome);
        return novo_nome;

    }

O final da função funciona perfeitamente, isto é, o fato de quando a string iniciar por número eu acrescento "Ip" antes do número.
A substituição dos caracteres não funciona corretamente, isto é, não me dá mensagem de erro alguma e me retorna a mesma string do input.

Alguémpode me ajudar?

Obrigado,

4 Respostas

T

Strings são imutáveis; o método replace retorna uma nova string. O que você deve fazer é algo como:

String novo_nome = nome;  
   
     novo_nome = novo_nome.replace("(", "_"); 
...  e assim por diante ...
T

Você também pode usar:

novo_nome.replace("(", “_”);

novo_nome.replace(")", “_”);

novo_nome.replace("[", “_”);

novo_nome.replace("]", “_”);

novo_nome.replace(":", “_”);

novo_nome.replace(" ", “_”);

novo_nome.replace("/", “_”);

novo_nome.replace("", “_”);

novo_nome = novo_nome.replaceAll ("[(): /\[\]]", "_");
danielti

Putz que vergonha que eu passei!!!

Muito básico o erro.

Muito obrigado,

Marky.Vasconcelos

Também funciona:

novo_nome =novo_nome.replacaAll("[(|)|\[|\]|:| |/]","_");
Criado 30 de março de 2009
Ultima resposta 30 de mar. de 2009
Respostas 4
Participantes 3