`

String split方法在忽略参数大小的情况下取得String[]的小技巧

阅读更多
今天在工作中,遇到这样的情况。首先给你一个SQL语句,比如:
    select * from tableA union select * from tableB
    要根据关键字把两个查询语句分解出来,即得到
   select * from tableA 和 select * from tableB
   一般的做法是:
String sql="select * from tableA union select * from tableB";
   if(sql.toLowerCase().indexOf(" union ")>-1){
    String sql2[]=sql.split(" union ");
    for(int i=0;i<sql2.length;i++){
      System.out.println(sql2[i]);
    }
  }

但因为这个是SQL语句,union关键字不区分大小写的,所有sql语句有这些情况:
select * from tableA UNION select * from tableB
select * from tableA UnIOn select * from tableB
select * from tableA UNiON select * from tableB
……
所以单单用这样的语句:String sql2[]=sql.split(" union ");
是分解不出子语句的。
这里的碰到了特殊情况,我不知道别人是怎么做的,我的思路是应该有种机制sql.split(不区分大小写);
String类没提供该方法,于是我觉得先看看SUN的源码,了解它的源码
是怎么处理的,找到了:
public int indexOf(String str) {
return indexOf(str, 0);
    }
public String[] split(String regex, int limit) {
return Pattern.compile(regex).split(this, limit);
    }
它运用的不过是正则表达式而已,幸好这几天对正则表达式有所研究。
看看正则表达式:

DEELX 正则表达式匹配模式

IGNORECASE

-------------------------
所以我们把
String sql2[]=sql.split(" union ");
修改为
String sql2[]=sql.split(" (?i)union ");
问题即可迎刃而解。
完整的:
String sql="select * from tableA union select * from tableB";
   if(sql.toLowerCase().indexOf(" union ")>-1){
    String sql2[]=sql.split(" (?i)union ");
    for(int i=0;i<sql2.length;i++){
      System.out.println(sql2[i]);
    }
  }

打印结果:
select * from tableA
select * from tableB
-------------------------
re: String split方法在忽略参数大小的情况下取得String[]的小技巧[未登录] 2008-05-27 02:59 | 李敏

String sql = "select * from tableA UNION select * from tableB"
.replaceFirst("UNION", "union");
if (sql.indexOf(" union ") > -1) {
String sql2[] = sql.split(" union ");
for (int i = 0; i < sql2.length; i++) {
System.out.println(sql2[i]);
}
}

既然是无法区分大小写,不如一开始就替换掉!
分享到:
评论

相关推荐

    python实现忽略大小写对字符串列表排序的方法

    本文实例讲述了python实现忽略大小写对字符串列表排序的方法,是非常实用的技巧。分享给大家供大家参考。具体分析如下: 先来看看如下代码: string = ''' the stirng Has many line In THE fIle jb51 net ''' list...

    浅析Java中Split函数的用法技巧

    在java.lang包中也有String.split()方法,与.net的类似,都是返回是一个字符型数组,但使用过程中还有一些小技巧。以下我就为大家介绍,需要的朋友可以参考下

    js使用小技巧

    Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode ...

    asp.net知识库

    Visual Web Development 2005开发ASP.NET使用小技巧 ASP.NET 2.0 异步页面原理浅析 [1] [原] 自定义通用System.Web.UI.IHierarchicalDataSource简单实现 在 ASP.NET 2.0 中创建 Web 应用程序主题 ASP.NET 2.0 中的...

    JavaScript详解(第2版)

     17.3.4 split()方法   17.4 获取控制——元字符   17.4.1 点元字符   17.4.2 字符类   17.4.3 元符号   17.4.4 重复模式匹配元字符   17.4.5 锚元字符   17.4.6 或模式   17.5 用正则...

    Ext Js权威指南(.zip.001

    8.1.3 格式化输出数据:ext.string、ext.number、ext.date和ext.util.format / 389 8.1.4 超级模板:ext.xtemplate(包括ext.xtemplateparser和ext.xtemplatecompiler) / 393 8.1.5 模板的方法 / 396 8.2 组件...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    在许多人的无私奉献下以及这种语言本身的源代码自由性质,它演变成为一种特点丰富的语言,而且现在还在成长中。 PHP虽然很容易学习,但是速度上比mod_perl(植入web服务器的perl模块)慢。现在有了可以与mod_perl...

    RED HAT LINUX 6大全

    2.3.2 内核参数选项 8 2.3.3 安装程序 9 2.3.4 选择一种安装方法 9 2.3.5 光盘安装 10 2.4 硬件配置 14 2.4.1 选择鼠标 14 2.4.2 配置X Window系统 14 2.4.3 配置网络 14 2.4.4 设置时区 15 2.4.5 选择服务自动启动 ...

    Tcl_TK编程权威指南pdf

    在过去的几年中,我一直在John Ousterhout的手下工作,最初是在Sun微系统公司,而现在是在Scriptics公司。我一直使自己在很大程度上保持着一个Tcl程序员的角色,而我们工作组中的其他人员则埋头于Tcl本身的C语言实现...

Global site tag (gtag.js) - Google Analytics