Escape двойные кавычки в Java
Возможный дубликат:
В Java существует ли способ написать строковый литерал без необходимости кавычек?
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);";
Скажем, я хочу, чтобы этот запрос был допустимой строкой в Java. Должен ли я преобразовать его, чтобы избежать всех двойных кавычек с завершающей косой чертой впереди?
e.g. = "CREATE TABLE \"users"\
Или существует ли более быстрый способ сделать весь этот запрос допустимой строкой сразу? Я думал, что вы можете использовать одинарные кавычки вокруг всей строки, чтобы это сделать, но это тоже не работает.
Ответы
Ответ 1
Выход из двойных кавычек с обратными косыми чертами - единственный способ сделать это в Java.
Некоторые IDE, такие как IntelliJ IDEA, автоматически выполняются при вставке такой строки в строковый литерал (т.е. между двойными кавычками, окружающими строковый литерал java)
Еще один вариант - поместить String в какой-то текстовый файл, который вы читали бы во время выполнения
Ответ 2
Использовать Java replaceAll(String regex, String replacement)
Например, используйте замену char для кавычек, а затем замените char на \"
String newstring = String.replaceAll("%","\"");
или замените все экземпляры \"
на \\\"
String newstring = String.replaceAll("\"","\\\"");
Ответ 3
Для константы String у вас нет другого выбора, кроме экранирования через обратную косую черту.
Возможно, вам интересен проект MyBatis. Это тонкий слой поверх JDBC, где вы можете экстеризировать ваши SQL-запросы в файлах конфигурации XML без необходимости избегать двойных кавычек.
Ответ 4
Да, вам придется избегать всех двойных кавычек с помощью обратной косой черты.