\
像这样双重逃脱:
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("\"", "\\\"");
}