我正在尝试将文本更新为MySql数据库。 该文本包含“标记。 作为示例字符串可能是Hello“world” 现在,当我写插入命令时,它的总和如
插入mytable('mystring')值(“Hello”world“”);
我正在使用java来执行这样的命令。显然,由于世界字符串中的双引号,这会产生错误。我尝试用java替换它
givenString.replaceAll("\"", "\\"");
givenString.replace(Pattern.quote("\""), "\\"");
但没有任何作用。非常感谢任何帮助!
答案 0 :(得分:5)
双重逃避\
,如此:
givenString.replaceAll("\"", "\\\"");
正如Ted Hopp在评论中所说,要将数据插入表中,您应该使用参数准备语句,并根据您使用的API进行设置。例如,如果您使用的是JDBC,则可以使用setString
对象的Statement
方法。
String str = "Hello \"world";
PreparedStatement stmt = con.prepareStatement(
"insert into mytable('column') values(?)");
stmt.setString(1, str);
关于您的第一条评论:
在Java中,字符串是不可变的,因此replaceAll
返回一个新实例,其内容是具有所需替换的字符串。所以你想要的是再次将结果分配给前一个变量,如下所示:
public String getSqlLikeString(String givenString) {
System.out.println(givenString);
givenString = givenString.replaceAll("\"", "\\\"");
System.out.println(givenString);
return givenString;
}
// or just
public String getSqlLikeString(String givenString) {
return givenString.replaceAll("\"", "\\\"");
}
答案 1 :(得分:0)
尝试这样的事情:
String s = "hello \"world\"";
System.out.println(s);
System.out.println(s.replace("\"", "\\\""));