在PHP中,我们有sanize来确保String是安全的。Java的类似之处是什么。我知道PreparedStatement。但这对我的项目没有帮助。有没有什么东西可以检查字符串中只有字母。
query = "SELECT Bill_No,No,Item,Count,Rate,GST,Net,Date,Time,Manager FROM bill WHERE Manager = '"+Manager_str+"'; ";
//This is definitely insecure
试试这个。
public static void main(String args[]) {
String str="sadahkk";
System.out.println("str :"+str +" , isAlphabetsOnly:"+isAlphabetsOnly(str));
str="";
System.out.println("str :"+str +" , isAlphabetsOnly:"+isAlphabetsOnly(str));
str="sada5hkk";
System.out.println("str :"+str +" , isAlphabetsOnly:"+isAlphabetsOnly(str));
str="<alert>";
System.out.println("str :"+str +" , isAlphabetsOnly:"+isAlphabetsOnly(str));
str="-- sadahkk";
System.out.println("str :"+str +" , isAlphabetsOnly:"+isAlphabetsOnly(str));
str="@fgfg";
System.out.println("str :"+str +" , isAlphabetsOnly:"+isAlphabetsOnly(str));
}
public static boolean isAlphabetsOnly(String str ) {
return ((!str.equals(""))
&& (str != null)
&& (str.matches("^[a-zA-Z]*$")));
}
==============================================
输出如下
str:sadahkk,isAlphabetsOnly:true
str:,isAlphabetsOnly:false
str:sada5hkk,isAlphabetsOnly:false
str:,isAlphabetsOnly:false
str:--sadahkk,isAlphabetsOnly:false
str:@fgfg,isAlphabetsOnly:false
Character
类有一个方法isAlphabetic
,您可以通过循环输入字符串中的字符来使用它。
for(char c : query.toCharArray()) {
if(!Character.isAlphabetic(c)) {
return false;
}
}
return true;
如果你使用的是Java 8或更高版本,你可以使用流:
return query.chars().allMatch(Character::isAlphabetic);