当前位置: 首页 > 面试题库 >

Java用'(撇号/单引号)和\(反斜杠)一起替换问题

司宏伯
2023-03-14
问题内容

我似乎有问题。我有一个查询字符串,其值可以包含单引号。这将中断查询字符串。因此,我试图进行替换以更改'\'

这是一个示例代码:

"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编码,而不能使用前导反斜杠进行转义。对于该用途URLEncoder.encode(String, String)(顺便说一句:第二个参数应始终为"UTF-8")。其次,如果要用反斜杠撇号替换所有的撇号实例,则必须在字符串表达式中使用反斜杠将反斜杠转义。像这样:

"This is' it".replace("'", "\\'");

编辑:

现在,我知道您可能正在尝试动态构建SQL语句。 要这样做。您的代码将容易受到SQL注入攻击。而是使用PreparedStatement



 类似资料:
  • 问题内容: 这让我发疯了,所以请您帮忙… 我有一个Java字符串,我想用单引号替换所有反斜杠双引号序列,即使我逃避了我认为必要的替换命令,该命令也不会对字符串产生任何影响。 感谢任何建议。 谢谢。 问题答案: 在Java中,字符串是不可变的。您对字符串执行的任何操作都会产生新的对象。操作后,您需要重新分配值。以下内容可能会对您有所帮助。

  • 问题内容: 我有一个字符串“ \\ u003c”,它属于UTF-8字符集。由于存在双反斜杠,因此我无法将其解码为unicode。如何从“ \\ u003c”获取“ \ u003c”?我正在使用Java。 我尝试过 但无法实现我想要的。 这是我的代码 文件的内容是 \ u003c 问题答案: 不知道您是否仍在寻找解决问题的方法(因为您已经接受了答案),但是我仍然会添加我的答案作为针对 所述问题 的可

  • 问题内容: 这是一个“到底发生了什么”的问题。我实际上不需要解决方案。 我必须用双反斜杠替换字符串中的所有单反斜杠。这就是我最终要做的… …其中strRootDirectory是上面的java.lang.String。 现在,我了解了第一个参数的四个反斜杠:regex期望两个反斜杠以表示单个文字反斜杠,而Java希望它们加倍。没关系。 但是,第二个参数的八个反斜杠到底是怎么回事?替换字符串不是应该

  • 问题内容: 我需要在路径字符串中替换为,但是以下代码失败。 有什么有用的建议吗? 问题答案: 使用函数filepath.ToSlash将操作系统路径分隔符替换为路径中的“ /”。 在Windows上,函数返回。在其他操作系统上,该函数按原样返回path参数。

  • 问题内容: 如何在Python中转义反斜杠和单引号或双引号? 例如: 问题答案: 你是怎么做到的 如果您从文件中读取了“长字符串”(如您在注释中所述),那么您的问题将引起误解。由于您显然不完全了解转义的工作原理,因此您写下的问题可能与您真正遇到的问题不同。 如果这些是文件的内容(如图所示为51个字节+可能是一两个行尾字符): 那么这就是在python中的样子: 您在问题中写的内容将产生: 你看得到

  • 问题内容: 我有以下问题: 我有一个向服务器执行AJAX请求的脚本,该服务器在预览中返回。但是,响应为。没什么大不了的,因为我只是想用单斜杠代替双斜杠。我一直在这里查看堆栈,但是我只能找到如何用双反斜杠替换单反斜杠,但反之亦然。 有人可以帮我这个忙吗? 问题答案: 应该这样做: 在正则表达式中,必须将单个转义为,在替换中也必须转义。