\
次のようにダブルエスケープします。
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("\"", "\\\"");
}