微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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);
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。