在Java中转义双引号

时间:2011-06-08 11:21:13

标签: java escaping

  

可能重复:
  In Java, is there a way to write a string literal without having to escape quotes?

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"\

或者有更快的方法让整个查询一次成为有效的字符串吗?我认为你可以在整个字符串周围使用单引号来做到这一点,但这也不起作用。

4 个答案:

答案 0 :(得分:54)

使用Java的replaceAll(String regex, String replacement)

例如,对引号使用替换字符,然后将该字符替换为\"

String newstring = String.replaceAll("%","\"");

或用\"

替换\\\"的所有实例
String newstring = String.replaceAll("\"","\\\"");

答案 1 :(得分:44)

使用反斜杠转义双引号是在Java中执行此操作的唯一方法。

IntelliJ IDEA周围的一些IDE在将这样的字符串粘贴到字符串文字中时(即在java字符串文字周围的双引号之间)自动转义

另一个选择是将String放入某种文本文件中,然后在运行时读取

答案 2 :(得分:2)

对于String常量,除了通过反斜杠转义外别无选择。

也许您觉得MyBatis项目很有趣。它是JDBC上的一个薄层,您可以在XML配置文件中外部化SQL查询,而无需转义双引号。

答案 3 :(得分:0)

是的,你必须用反斜杠来逃避所有双引号。