java - 删除字符串中的反斜杠

标签 java jsp servlets

在我的 jsp 页面中,我有一个包含多项选择的 dropdown 列表,我使用 将这些值存储在一个 Strings 数组中>getParamterValues() ,然后我将数组转换为具有以下格式的字符串:('x','y','z')。因此它可以与SQL serverIN 运算符一起工作。

但问题是,在array 转换为String 后,每个元素都被反斜杠包围。像这样:(\'X\',\'Z\',\'Y\')

我使用了 String.replaceAll("\\\\", "");,它在另一个 Java 应用程序 中运行良好。我不确定为什么它不适用于我的 servlet 解决方案(网络应用程序)。

这是我的代码:

String[] Names = request.getParameterValues("Name");
String Name = "(";
for (int i = 0; i < Names.length; i++) {
    Name += "'".concat(Names[i]).concat("'") + ',';
}
Name = Name.concat(")");
Name = Name.replace(",)", ")");
Name = Name.replaceAll("\\\\", "");

我知道 Name = Name.replaceAll("\\\\", ""); 会删除反斜杠,但我不知道为什么它在 servlet 中不起作用?!

下拉 列表中的值是否有问题?

最佳答案

尝试使用类似的东西:

String[] names = request.getParameterValues("Name");
StringBuilder name = new StringBuilder("(");
for(int index = 0; index <names.length; index++){
    name.append("'");
    name.append(names[index].replace("\\","").replace("/",""));
    name.append("'");
    name.append(index != names.length -1? "," : ")");
}
String output = name.toString();

replace()方法替换子字符串的每个实例,因此您不必使用 "\\\\" 除非您想删除双斜线并离开单斜线。

如果问题仍然存在,则可能有两个原因。

  1. 调试器将'表示为\',因此向服务器发送查询应该没有问题。
  2. \ 实际上不是斜杠或反斜杠,而是另一个看起来像反斜杠的字符。您可以使用 int test = output.charAt(output.length() - 3); 找到它是哪个字符,然后使用调试器检查测试变量的值。

关于java - 删除字符串中的反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40589099/

相关文章:

java - 如何导出IntelliJ IDEA项目以便在没有IntelliJ IDEA的另一台机器上编译

java - JVM如何知道没有参数的泛型类型参数?

eclipse - 无法在 JSP 编辑器中获得内容帮助

java - 从 Java Web 服务器链接外部文件

java - 仅提示来自特定 servlet 的(任何)客户端证书

java - TimeZone 不知道 EEST 时区

java - 实例化泛型 : new ArrayList<? >() 与 new ArrayList<List<?>>()

java - 如何让struts2看到我的属性文件

java - 从 java 服务器页面中删除所有 HTML

java - 为什么 sendRedirect 不起作用?