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;
工作吗?