Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除字符串中的反斜杠_Java_Jsp_Servlets - Fatal编程技术网

Java 删除字符串中的反斜杠

Java 删除字符串中的反斜杠,java,jsp,servlets,Java,Jsp,Servlets,在我的jsp页面中,我有一个带有多个选择的下拉列表,我使用getParameterValues()将这些值存储在字符串数组中,然后我将该数组转换为具有以下格式的字符串:('x','y','z')。因此,它可以与SQL server的操作符中的一起工作 但问题是在数组转换成字符串后,每个元素都被反斜杠包围。像这样:(\'X\'、\'Z\'、\'Y\') 我使用了String.replaceAll(“\\\\”,”)在另一个Java应用程序中运行良好。我不确定它为什么不能与我的servlet解决方案

在我的
jsp
页面中,我有一个带有多个选择的
下拉列表,我使用
getParameterValues()
将这些值存储在
字符串数组中,然后我将该数组转换为具有以下格式的字符串:
('x','y','z')
。因此,它可以与
SQL server的
操作符中的
一起工作

但问题是在
数组
转换成
字符串
后,每个元素都被反斜杠包围。像这样:
(\'X\'、\'Z\'、\'Y\')

我使用了
String.replaceAll(“\\\\”,”)
在另一个
Java应用程序中运行良好。我不确定它为什么不能与我的
servlet
解决方案(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("\\\\", "");
String[]Names=request.getParameterValues(“Name”);
字符串名称=“(”;
for(int i=0;i
我知道
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();
String[]names=request.getParameterValues(“Name”);
StringBuilder名称=新的StringBuilder(“”);

对于(int index=0;index您在SQL中使用
名称之前是否尝试将其打印到日志中?我想您会看到它根本没有任何反斜杠,问题在于您在SQL中使用它的方式。请回答这个问题并添加使用该变量创建SQL语句的部分。还要注意,在Java中,变量和方法名称应以小写(
name
)开头,并且只有类、枚举和接口以大写开头。@Real怀疑论者,我知道打印时没有反斜杠,但dubgger显示name=(/'X/'、/'Z/'、/'Y/')的变量如果打印时没有反斜杠,并且调试器显示反斜杠(顺便说一句-/is slash、\is backslash),那么这可能只是调试器的问题,它会转义单引号。打印字符串的长度-是否包含斜杠?我已更新了问题,键入反斜杠时出错,请再次检查。因此,我将删除此行名称[index]=names[index].replace(“\\”,”);?同样的结果:(我想dubgger在每个元素前后的每个引号('x','z')上都放了一个\号,你同意吗?第一个是你事先说的谢谢:),但我还有一个问题,我的字符串会这样发送('x','z'))对于服务器的查询,顺便说一句,我需要它像SELECT*FROM tableXX,其中name IN('x','z')@MohamedNagy不
String query=“SELECT*FROM tableXX,其中name IN”+output;
工作吗?