JAVA replaceAll
Résolu/Fermé
A voir également:
- JAVA replaceAll
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Télécharger jeux java gameloft gratuit - Forum Mobile
- Java décompiler - Télécharger - Langages
5 réponses
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 ].
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 ].
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.
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.
jcodeunpeu
Messages postés
365
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
2 décembre 2006
6
21 janv. 2006 à 00:26
21 janv. 2006 à 00:26
bonsoir,
maChaine = maChaine.replaceAll("[s]", "");
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question