(java)输入一字符串,判断是否为Java关键字

(java)输入一字符串,判断是否为Java关键字,第1张

额,不想开eclipse,代码就不写了,给个提示吧,这种东西,如果老是要参考别人的代码来理解,那么编程是永远提高不了的,废话不多说

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类应该是别人写的类吧,如果你不清楚这个类和它里面方法的代码,怎么可能理解这段代码的含义呢


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10705808.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存