der*_*kmw 24 java string replace escaping backslash
我似乎遇到了问题.我有一个查询字符串,其值可以包含单引号.这将破坏查询字符串.所以,我试图做一个替代改变'对\'.
这是一个示例代码:
"This is' it".replace("'", "\'");
Run Code Online (Sandbox Code Playgroud)
这个输出仍然是:
"This is' it".
Run Code Online (Sandbox Code Playgroud)
它认为我只是为报价做一个转义字符.
所以我尝试了这两段代码:
"This is' it".replace("'", "\\'"); // \\ for the backslash, and a ' char
"This is' it".replace("'", "\\\'"); // \\ for the backslash, and \' for the ' char
Run Code Online (Sandbox Code Playgroud)
以上两个STILL都会产生相同的输出:
"This is' it"
Run Code Online (Sandbox Code Playgroud)
我似乎只能通过以下方式实现这一点:
"This is' it".replace("'", "\\\\'");
Run Code Online (Sandbox Code Playgroud)
结果如下:
"This is\\' it"
Run Code Online (Sandbox Code Playgroud)
有什么建议?我只是想更换一个'同\'.
它似乎不应该那么困难.
Asa*_*aph 33
首先,如果你正在尝试使用querystrings编码撇号,它们需要是URLEncoded,而不是使用前导反斜杠进行转义.对于那种用途URLEncoder.encode(String, String)(BTW:第二个参数应该总是如此"UTF-8").其次,如果要使用反斜杠撇号替换所有的apostophe实例,则必须使用前导反斜杠转义字符串表达式中的反斜杠.像这样:
"This is' it".replace("'", "\\'");
Run Code Online (Sandbox Code Playgroud)
我现在看到你可能正在尝试动态构建一个SQL语句.不要这样做.您的代码将容易受到SQL注入攻击.而是使用PreparedStatement.