Dupliquer possible:
En Java, est-il possible d'écrire un littéral de chaîne sans avoir à échapper des guillemets?
private static final String CREATE_TABLE_EXHIBITORS = "CREATE TABLE "users" ("_id" text PRIMARY KEY ,"name" text,"body" text,"image" text,"stand_id" text,"begin" long,"end" long,"changedate" long,"website" text,"facebook" text,"myspace" text,"Twitter" text,"festivallink" text,"favorite" integer);";
Disons que je veux que cette requête soit une chaîne valide en Java. Dois-je le convertir pour échapper à tous les guillemets avec une barre oblique au début?
e.g. = "CREATE TABLE \"users"\
Ou existe-t-il un moyen plus rapide de transformer cette requête en une chaîne valide en une fois? Je pensais que vous pourriez utiliser des guillemets simples autour de la chaîne entière pour le faire, mais cela ne fonctionne pas non plus.
Échapper aux guillemets avec des barres obliques inverses est le seul moyen de le faire en Java.
Certains IDE tels que IntelliJ IDEA font que l'échappement se produit automatiquement lors du collage d'une telle chaîne dans un littéral String (c'est-à-dire entre les guillemets entourant un littéral Java String).
Une autre option serait de placer la chaîne dans une sorte de fichier texte que vous liriez ensuite à l'exécution
Utilisez replaceAll(String regex, String replacement)
de Java
Par exemple, utilisez un caractère de substitution pour les guillemets, puis remplacez ce caractère par \"
.
String newstring = String.replaceAll("%","\"");
ou remplacez toutes les instances de \"
par \\\"
String newstring = String.replaceAll("\"","\\\"");
Pour une constante String, vous n'avez pas d'autre choix que de vous échapper via une barre oblique inverse.
Peut-être trouvez-vous le projet MyBatis intéressant. C'est une couche mince sur JDBC où vous pouvez externaliser vos requêtes SQL dans des fichiers de configuration XML sans avoir besoin d'échapper aux guillemets doubles.
Oui, vous devrez échapper à toutes les guillemets doubles par une barre oblique inverse.