Java将问题替换为\'(撇号/单引号)和\\\\(反斜杠)

|| 我似乎有问题。我有一个查询字符串,其值可以包含单引号。这将中断查询字符串。所以我试图做一个替换,将
\'
更改为
\\\'
。 这是一个示例代码:
\"This is\' it\".replace(\"\'\", \"\\\'\");
输出仍然是:
\"This is\' it\".
它认为我只是对引号进行转义。 所以我尝试了这两段代码:
\"This is\' it\".replace(\"\'\", \"\\\\\'\");  // \\\\ for the backslash, and a \' char
\"This is\' it\".replace(\"\'\", \"\\\\\\\'\"); // \\\\ for the backslash, and \\\' for the \' char
上面的两个STILL都产生相同的输出:
\"This is\' it\"
我似乎只能得到这实际上吐出一个斜线:
\"This is\' it\".replace(\"\'\", \"\\\\\\\\\'\");
结果是:
\"This is\\\\\' it\"
有什么建议么?我只想用
\\\'
代替
\'
。 似乎应该没有那么困难。     
已邀请:
        首先,如果要对查询字符串编码撇号,则需要对它们进行URLEncoded编码,而不能用反斜杠转义。为此使用use10ѭ(顺便说一句:第二个参数应始终为
\"UTF-8\"
)。其次,如果要用反斜杠撇号替换所有的撇号实例,则必须在字符串表达式中使用反斜杠将反斜杠转义。像这样:
\"This is\' it\".replace(\"\'\", \"\\\\\'\");
编辑: 现在,我知道您可能正在尝试动态构建SQL语句。不要这样做。您的代码将容易受到SQL注入攻击。而是使用
PreparedStatement
。     
        使用
\"This is\' it\".replace(\"\'\", \"\\\\\'\")
    
        我使用了一个技巧来处理撇号特殊字符。将\'替换为\\\'时,您需要在撇号前面放置四个反斜杠。
str.replaceAll(\"\'\",\"\\\\\\\\\'\");
    
        如果要在JavaScript中使用它,则可以使用
str.replace(\"SP\",\"\\\\SP\");
但是在Java中
str.replaceAll(\"SP\",\"\\\\SP\");
会完美地工作。 SP:特殊字符 否则,您可以使用Apache的EscapeUtil。它将解决您的问题。     
        我用过
str.replace(\"\'\", \"\");
替换我字符串中的单引号。它对我来说很好。     
        请记住,
stringToEdit.replaceAll(String, String)
返回结果字符串。它不会修改stringToEdit,因为在Java中字符串是不可变的。要坚持下去,您应该使用
stringToEdit = stringToEdit.replaceAll(\"\'\", \"\\\\\'\");
    
        范例:
String teste = \" \'Bauru \'\";

teste = teste.replaceAll(\"  \'  \",\"\");
JOptionPane.showMessageDialog(null,teste);
    

要回复问题请先登录注册