[RESOLVIDO] replaceAll Sinal de +

Boa tarde, eu estou com um pequeno problema em que eu preciso substituir todos os sinais de + de uma String por %2B

Mas ele dá o erro Dangling meta character ‘+’ near index 0

Poderiam me dar uma sugestão de como contornar esse problema?

url=url.replaceAll("+", "%2B");

Olá amigo,

Para que a função entenda um literal, tente escapar, por exemplo:

String x = s.replaceAll("\\+", "%2B");

[]'s

Isso funciona se eu faço isso:

String teste="coisa+testes+tes"; teste=teste.replaceAll("\\+", "%2B");

Mas quando eu passo como parametro:

public static void teste(String teste){ teste=teste.replaceAll("\\+", "%2B"); }

Não funciona ele simplesmente não substitui

Qual o conteúdo do atributo teste quando você o passa como argumento para o método teste()?

Isso funciona:

String teste = "coisa+testes+tes"; teste = teste.replaceAll("\\+", "%2B");

Portanto, certifique-se de que o conteúdo do atributo esteja correto!

[]'s

[quote=criscky]Isso funciona se eu faço isso:

String teste="coisa+testes+tes"; teste=teste.replaceAll("\\+", "%2B");

Mas quando eu passo como parametro:

public static void teste(String teste){ teste=teste.replaceAll("\\+", "%2B"); }

Não funciona ele simplesmente não substitui[/quote]

A passagem de parâmetros, no Java, é por valor. Você está alterando numa cópia local.
Coloque um retorno no método.

public static String teste(String teste){ return teste.replaceAll("\\+", "%2B"); }

Aliás, se você está tentando realizar o encoding da url, tem uma classe pronta para isso:

  public static String teste(String url) {
    try { 
      return URLEncoder.encode(url , "UTF-8")
    } catch (UnsupportedEncodingException e) {
            throw new IllegalArgumentException("Uma exceção que nunca ocorrerá",e);
    }   
  }

[quote=AbelBueno]Aliás, se você está tentando realizar o encoding da url, tem uma classe pronta para isso:

[code]
public static String teste(String url) {
try {
return URLEncoder.encode(url , “UTF-8”)
} catch (UnsupportedEncodingException e) {
throw new IllegalArgumentException(“Uma exceção que nunca ocorrerá”,e);
}
}

[/code][/quote]

Muito obrigado isso resolveu tudo