有关java字符串截取和比较的一些问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 06:25:30
static String name = "Edawrd";
static String pass = "11+{$name}111";
static String s1 ="select * from alues where name ='"+name+"' and pass ='"+pass+"'";

一个SQL语句。现在已空格为条件截取(主要是name里的内容,那么的内容截取)截取后,每个截取的字符串还要和特定字符串进行比较(主要是这个)。
从新说一下吧,我就是想,提出 name 里边 有无 想select.update,之类的关键字

说真的,觉得你这个写法有点不合理。
有两点:
1. 以空格为条件截取这个要求本身;
原因:对字符串本身要求比较高,否则截取完后还要进行trim() ,挺那个什么的。

2. sql语句的写法。如果没有猜错,目标应该是验证用户名和密码。
安全的写法是select pass from alues where name ='"+name+"';
再比较pass与传人的pass.

字符串截取本身的方法形如:
String s = "asas asas dfdfdf rgerg"
String[] s_result = s.split("分界符");
得到的是一个字符串数组。

——————————————
那就比呗,你拿到name按照空格为分界符得到的字符串之后,比如为:
String[] names
然后定义关键字数组,比如为:
String matchs = ("select","update","delete")
然后就是两重循环去比较了。

或者写个新方法,不过最容易想到的也就是这么多了,还是要循环的,比如:
//判断一个字符串是否属于某个字符串数组
public static boolean isStrInStrs(String str, String[] strs) {
boolean isin = false;
for (int i = 0; i < strs.length; i++) {
if (strs[i].equals(str)) {
isin = true;
break;
}
}
return isin;
}