Hello,
Dans mon projet d'application de gestion en java, j'ai, à de nombreux endroits, des chaînes de caractères, encodées par l'utilisateur, qui sont envoyées et stockées dans une base de donnée MySQL.
Dans le but de faire face à tout encodage de caractères spéciaux par l'utilisateur, j'ai cherché à faire une classe contenant une méthode qui me transforme les chaînes contenant des ' , des \ et des " avec un backslash devant : exemple : L'ombre devient L\'ombre.
J'ai réussi à écrire ceci qui fonctionne très bien :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| import java.util.*;
public class StringMySQLConverter
{
public String chaineAConvertir;
//******************************************************************
public StringMySQLConverter(String chaineAConv )
{
chaineAConvertir = chaineAConv;
}
//******************************************************************
public String adapterPourMySQL()
{
char [] mot; mot = chaineAConvertir.toCharArray();
Vector leMot = new Vector();
for( int i=0; i<mot.length; i++)
leMot.add( ""+mot[i] );
Vector nouvMot = new Vector(); int j=0;
for (int i=0; i<leMot.size(); i++)
{
if ( ((String)leMot.elementAt(i)).equals("\'") )
{
nouvMot.insertElementAt("\\",j);
j++;
nouvMot.insertElementAt( (String)leMot.elementAt(i) , j);
}
else if ( ((String)leMot.elementAt(i)).equals("\\") )
{
nouvMot.insertElementAt("\\",j);
j++;
nouvMot.insertElementAt( (String)leMot.elementAt(i) , j);
}
else if ( ((String)leMot.elementAt(i)).equals("\"") )
{
nouvMot.insertElementAt("\\",j);
j++;
nouvMot.insertElementAt( (String)leMot.elementAt(i) , j);
}
else {
nouvMot.insertElementAt( (String)leMot.elementAt(i) , j);
}
j++;
}
StringBuffer chaineARenvoyer = new StringBuffer();
for (int h=0; h<nouvMot.size(); h++)
chaineARenvoyer.append( (String)nouvMot.elementAt(h) );
return chaineARenvoyer.toString();
}
//******************************************************************
} |
Ce qui donne un appel de la sorte dans le programme qui l'utilise :
chaineAEnvoyer = (new StringMySQLConverter(texteEncodé)).adapterPourMySQL() ;
Mais je me demande s'il n'y a pas moyen de faire plus léger ou plus beau et concis dans l'écriture...
Quelqu'un a une autre idée à me donner pour faire en plus simple cette préparation de chaîne ?
[ Modéré par Bulbo ]
Ajout d'un tag dans le titre
Les Règles du Forum
Partager