1.
输入输出流对文件中的字符串进行读取,可以用字符流(filereader),也可以用字节流(fileinputstream,字节流读取到的是字节,所以需要转化成字符串)
2.
比较的方法:有几种吧
a)string对象的contains方法(字符串中是否包含有输入的字符串,有则认为可能是关键字);b)string对象的indexof方法(有则认为可能是关键字);c)由于存放在文件中的字符串每个关键字肯定是由某个符号分开的,可以先进行split分割,之后遍历分割得到的字符串数组
几种比较的方法,前两种还需要进一步判断在文件中相应字符串的前后字符是什么,如果是分隔符,那么就说明输入的是关键字了
好了,还有别的问题再提出来吧,代码我是懒得写的~
java验证字符串是否为sql语句,是否包含select关键字,主要使用的是正则表达式来进行验证,如下:
import java.util.*import java.text.*
class sqltest
{
public static void main(String[] args)
{
String span="select aaaa.id name ,hello ,type t,h from datas aaaa,city b where a.id=b.id and c like 'e%' and name is null "
span=span.toUpperCase()//测试用sql语句
System.out.println(span)
String column="(\\w+\\s*(\\w+\\s*){0,1})"//一列的正则表达式 匹配如 product p
String columns=column+"(,\\s*"+column+")*" //多列正则表达式 匹配如 product p,category c,warehouse w
String ownerenable="((\\w+\\.){0,1}\\w+\\s*(\\w+\\s*){0,1})"//一列的正则表达式 匹配如 a.product p
String ownerenables=ownerenable+"(,\\s*"+ownerenable+")*"//多列正则表达式 匹配如 a.product p,a.category c,b.warehouse w
String from="FROM\\s+"+columns
String condition="(\\w+\\.){0,1}\\w+\\s*(=|LIKE|IS)\\s*'?(\\w+\\.){0,1}[\\w%]+'?"//条件的正则表达式 匹配如 a=b 或 a is b..
String conditions=condition+"(\\s+(AND|OR)\\s*"+condition+"\\s*)*"//多个条件 匹配如 a=b and c like 'r%' or d is null
String where="(WHERE\\s+"+conditions+"){0,1}"
String pattern="SELECT\\s+(\\*|"+ownerenables+"\\s+"+from+")\\s+"+where+"\\s*" //匹配最终sql的正则表达式
System.out.println(pattern)//输出正则表达式
System.out.println(span.matches(pattern))//是否比配
}
}
!=-1第一:叹号前的方法会返回一个值,来判断对否存在指定内容,如果有返回对应值得下标,是一个从0开始的整数,“!=”是代表判断是否不等,如果前面返回的值是1!=-1,由于1不等于-1的,所以此判断返回真,如果都是-1的话,两数相等,则反会假
第二,SortedArray类应该是别人写的类吧,如果你不清楚这个类和它里面方法的代码,怎么可能理解这段代码的含义呢
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)