2008-11-18 7 views
1

Je chaîne suivantechaîne remplacer la fonction

String str = "replace :) :) with some other string"; 

Je veux remplacer la première occurence de :) avec une autre chaîne

Et je str.replaceFirst(":)","hi");

il donne suite exception

"Fermeture inégalée") '"

J'ai essayé d'utiliser la fonction replace mais elle a remplacé toutes les occurrences de :).

Répondre

10

La méthode replaceFirst prend une expression régulière comme premier paramètre. Puisque ) est un caractère spécial dans les expressions régulières, vous devez le citer. Essayez: il faut

str.replaceFirst(":\\)", "hi"); 

La double barre oblique inverse parce que la chaîne double cité utilise également le backslash comme caractère de citation.

+0

i essayé d'utiliser cela aussi, mais son exception ... même lancers francs – user25778

+0

Compile bien pour moi - vérifier que vous ne l'avez pas fait la même erreur ailleurs. –

5

Le premier argument de remplacerFirst() est une expression régulière, pas seulement une séquence de caractères. Dans les expressions régulières, les parenthèses ont une signification particulière. Vous devez échapper à la parenthèse comme ceci:

str = str.replaceFirst(":\\)", "hi"); 
Questions connexes