Remplacer le caractère ' dans une String

Remplacer le caractère ' dans une String - Java - Programmation

Marsh Posté le 21-01-2005 à 17:09:17    

Salut
 
Je voudrais remplacer le caractère ' par % dans un objet de type String
J'ai essayé !
s.replace("'","%" ); : erreur de compilation, la fonction doit prendre des char
s.replace('\'','%'); compil ok, mais le résultat n'est pas bon, la chaine n'est pas modifié
Y a t'il une solution ?
 
Merci d'avance

Reply

Marsh Posté le 21-01-2005 à 17:09:17   

Reply

Marsh Posté le 21-01-2005 à 17:12:01    

Code :
  1. s=s.replace('\'','%');


Message édité par dsls le 21-01-2005 à 17:12:11
Reply

Marsh Posté le 21-01-2005 à 17:16:24    

merci

Reply

Marsh Posté le 21-06-2005 à 10:03:49    

J'ai le même problème pour échapper le Quotes lors de l'insertion en base de données.
 
Le problème est que repace prend un caractère et j'ai besoin de doubler le quotes pour que Oracle le prenne.

Reply

Marsh Posté le 21-06-2005 à 10:21:52    

ksavieras a écrit :

Salut
 
Je voudrais remplacer le caractère ' par % dans un objet de type String
J'ai essayé !
s.replace("'","%" ); : erreur de compilation, la fonction doit prendre des char
s.replace('\'','%'); compil ok, mais le résultat n'est pas bon, la chaine n'est pas modifié
Y a t'il une solution ?
 
Merci d'avance


 
c'est normal, les chaines de caracteres sont immuable :o
s=s.replace('\'','%'); aurait marché  [:spamafote]  

Reply

Marsh Posté le 21-06-2005 à 10:22:43    

compuman101 a écrit :

J'ai le même problème pour échapper le Quotes lors de l'insertion en base de données.
 
Le problème est que repace prend un caractère et j'ai besoin de doubler le quotes pour que Oracle le prenne.


 
 
utilise des PreparedStatement plutot, et laise ton Driver faire le boulot à ta place ! ce n'est pas à toi d'échapper ces caractères !

Reply

Marsh Posté le 21-06-2005 à 10:43:28    

souk a écrit :

utilise des PreparedStatement plutot, et laise ton Driver faire le boulot à ta place ! ce n'est pas à toi d'échapper ces caractères !


OK je vais voir :)
 
Merci

Reply

Marsh Posté le 21-06-2005 à 10:57:00    

J'ai ca :
 
            dbStatement = dbConnection.createStatement();
            dbStatement.setEscapeProcessing(true);
            dbResultSet = dbStatement.executeQuery(dbQuery);
 
La dbQuery est une chaîne de type String dans laquelle je stocke la requête à exécuter.
Le EscapeProcessing n'a pas l'air d'être pris en compte et je me demande comment il peut savoir quel tel Quotes est un séparateur de contenu ( Exemple = WHERE valeur = 'chaine' ) ou un caractère à échapper (Problème lorsque chaine est de la forme : "J'habite Lyon" )
 
Tu vois mon problème ? :$

Reply

Marsh Posté le 21-06-2005 à 11:22:03    

il faut utiliser un PreparedStatement je t'ai dit [:dawa]
 
et toi tu fais un Statement ...
 

Code :
  1. PreparedStatement pstmt = dbConnection.prepareStatement("update chose set truc = ? where machin like ?" );
  2. pstmt.setString(1,maChaineAvecDesCaracteresTordus)
  3. pstmt.setString(2,uneAutreChaine);
  4. int nbRowUpdated = pstmt.executeUpdate();
  5. System.out.println(nbRowUpdated+" lignes modifiées" );


 
voila
 
PS: PreparedStatement

Reply

Marsh Posté le 21-06-2005 à 11:26:44    

ah merci beaucoup, ca nécessite que je change pas mal l'architecture de mon programme, je générais les requêtes et je les envoyais à une couche d'abstraction du driver JDBC...
 
J'ai essayé d'échapper les caractères à la main mais que ce soit en doublant le quotes ou en ajoutant un anti slash j'ai le même problème.
 
Il n'est pas possible de jouer avec les chaines pour échapper ?

Reply

Marsh Posté le 21-06-2005 à 11:26:44   

Reply

Marsh Posté le 21-06-2005 à 11:35:54    

c'est possible, mais c'est mal :o
 
le jour ou tu change de base de données ou autre, les caractères à échapper vont pas forcément etre les memes, etc... échapper les caractères, ce n'est pas à toi de le faire, c'est au Driver [:spamafote]

Reply

Marsh Posté le 21-06-2005 à 11:37:49    

sinon il faut essayer replaceAll il me semble ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed