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

但是问题在于,将SQL server转换为array后,每个元素都用反斜杠包围。像这样:String

我用过(\'X\',\'Z\',\'Y\')在另一个String.replaceAll("\\\\", "");中工作正常。我不确定为什么它不能与我的Java application解决方案(Web应用程序)一起使用。

这是我的代码:

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("\\\\", "");


我知道servlet将删除反斜杠,但我不知道为什么它不能在servlet中使用!

Name = Name.replaceAll("\\\\", "");列表中的值是否有问题?

最佳答案

尝试使用类似:

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()方法替换子字符串的每个实例,因此,除非您只想删除双斜杠并保留单斜杠,否则不必使用"\\\\"

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


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

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

10-10 13:59
查看更多