VIVEZ LE
FOOTBALL !

Posez votre question Signaler

JAVA replaceAll

ruth - Dernière réponse le 11 juil. 2011 à 18:00
Bonjour à tous .
SVP je souhaite dans une chaine maChaine replacer la chaine "[s]" par le caractere vide ""!
je fais donc

maChaine.replaceAll("\[s\]", "")
mais ca ne marche pas
de meme maChaine.replaceAll("[s]", "") ne marche pas!
Que faire?
merci
Lire la suite 

JAVA replaceAll »

Suggestions
8 réponses
Réponse
+10
moins plus
Pour ceux qui passeront par ici, la solution est :

maChaine = maChaine.replaceAll("\\[s\\]", "");

tada...

on double les backslashs pour qu'il ne soient pas interprétés par le programme java.
Puis le backslash qui reste est utilisé par l'expression régulière : n'interpréte pas le caractère suivant [ puis ].
Ajouter un commentaire
Réponse
+0
moins plus
bonsoir,

maChaine = maChaine.replaceAll("[s]", "");
Ajouter un commentaire
Réponse
+0
moins plus
ok
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Ton code ne fonctionne pas à cause d'un élément essentiel du fonctionnement des strings en java.

Les String sont immuables (immutable ?) donc une chaine ne peut pas être modifié directement comme ça.
Le résultat de ton remplacement est donc renvoyé depuis ta méthode et non placé directement dans la chaine que tu utilises.

Pour avoir un comportement plus proche de celui que tu attend, il faudrait utiliser un StringBuffer... qui lui comporte des méthodes de remplacement en direct... (genre append par exemple)

Les String sont gérées avec le pattern fly weight (poids mouche). Ce pattern augmente nettement la stabilité des applis vu que les Strings sont tout le temps utilisée. Tu es donc sur en permanence de la valeur d'une chaine, même en multi thread...

En C, tu aurai un joli pointeur que tout le monde pourrait modifier... et si tu te plantes à un moment dans tes sémaphores c'est ViolationException à tous les coups !

D'ailleurs, sur un StringBuffer, il faut faire des synchronized sinon t'as le même comportement.

J'espere avoir contribuer au débat.
Davu - 27 mai 2010 à 17:07
qu'est ce qu'il raconte, lui ?
vafenculo - 25 juin 2010 à 15:22
il a raison. le maChaine.replaceAll("\\[s\\]", ""); n'a pas d'effet sur machaine. il faut faire un
maChaine = maChaine.replaceAll("\\[s\\]", "");
ceci dit, ce n'était pas le souci initial je pense..
blaise - 11 juil. 2011 à 18:00
twingocerise, merci d'avoir répondu à la question, même si les 3/4 n'ont absolument rien à voir. On sait que tu sais des choses, inutile de l'étaler tel le Français.
Ajouter un commentaire
Réponse
+0
moins plus
ce qu'il a fait ca marche je viens de le tester a l'instant,
Ajouter un commentaire
Ce document intitulé « JAVA replaceAll » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?