问题描述
现在遇到一个问题 String a=" where b = 1 or yylb ='@aa' and c=1 and a='@c' ";中如何替换含有@符号内容整块为1=1字符串,得到结果是String a=" where b = 1 or 1=1 and c=1 and 1=1 ";
解决方案
试试我的这段代码,应该可以解决你的问题,但我觉得应该还有更好的代码//这是你提供的sqlString str=" where b = 1 or yylb ='@aa' and c=1 and a='@c' "; //因为后面要用到空格分组获取条件,首先去掉等号左右的空格,这个不会影响sql语句的执行str=str.replaceAll("\s{0,}=\s{0,}", "=");StringBuffer bufferSql=new StringBuffer(" ");//按一个或多个空格分组String [] strs=str.split("\s{1,}");for (int i = 0; i < strs.length; i++) {if(strs[i].indexOf("@")>-1){bufferSql.append("1=1 ");}else{bufferSql.append(strs[i]+" ");}}System.out.println(bufferSql.toString());//执行结果" where b=1 or 1=1 and c=1 and 1=1 "
解决方案二:
正则表达式,以@开头,以'结尾,全部替换为1';不会写正则就从后往前遍历@,找到@再此基础上找',然后进行文本操作截取替换。
时间: 2024-10-22 07:42:07