String sql="select abc from def where efg=1";
sql=sql.replaceAll("[W|w][H|h][E|e][R|r][E|e]","where");
int i=sql.indexOf("where");

解决方案 »

  1.   

    先转成小写,然后再indexof        String sql="select abc from def where efg=1";
           int i= sql.toLowerCase().indexOf("where");
      

  2.   

    public class Singleton {
      private Singleton(){}
      //在自己内部定义自己一个实例,是不是很奇怪?
      //注意这是private 只供内部调用
      private static Singleton instance = new Singleton();
      //这里提供了一个供外部访问本class的静态方法,可以直接访问  
      public static Singleton getInstance() {
        return instance;   
       } 

    第二种形式: 
    public class Singleton { 
      private static Singleton instance = null;
      public static synchronized Singleton getInstance() {
      //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
      //使用时生成实例,提高了效率!
      if (instance==null)
        instance=new Singleton();
    return instance;   } 

      

  3.   

    用pigo(少壮且行英雄梦,迟暮归守温柔乡) 的方法吧,转成小写,然后在用indexof方法查找
      

  4.   

    楼主可以把他们都转换成同一种字体,都是大写或者都是小写,同过string.toLowerCase().
    然后再用indexof()来取where的位置
      

  5.   

    public class string 
    {
    public static void main (String [] args)
    {
    String sql="select abc from def where efg=1";
    String sql2="select abc from def WHERE efg=1";
    String str = sql2.toLowerCase();
    int i = sql.indexOf("where");
    int j = str.indexOf("where");
    System.out.println(i);
    System.out.println(j); }
    }
      

  6.   

    2搂的方法不合适,要是sql语句中的其他东西有大写的,转化成小写的,岂不是错误?????
    试试一楼的办法了.
      

  7.   

    sql语句是不区分大小写的,包括表名,列名
    所以他的办法是可行的
      

  8.   

    呵呵,我是只如果update某些值,值的内容是大写的,我转化成小写不就错了么?还是
     jFresH_MaN(TM) ( ) 信誉:135 你的办法好啊.采用了
      

  9.   

    String 是不可变类,toLowerCase 是不会修改原来的String,toLowerCase比正则表达式替换的效率高出许多。不过 replaceAll 的技术含量更高,呵呵。