`

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]);
}
}

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

相关推荐

    关于String类的一些方法

    在本文中,我们将深入探讨`String`类的一些关键方法,这些方法在日常编程中极为常用,有助于字符串的处理和操作。 1. **构造方法**: - `String()`:创建一个空字符串。 - `String(char[] value)`:根据字符数组...

    String常用方法练习

    在Java编程语言中,`String`类是使用最频繁的类之一,因为它在处理文本...同时,也可以学习如何在实际代码中组织和测试这些方法,增强编码技巧。记得在运行代码时,仔细观察结果,以便更好地理解字符串操作的内部机制。

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

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

    String 优化

    通过理解`String`对象在JVM中的存储方式和优化技巧,开发者可以在编写代码时做出更明智的选择,从而提高程序的性能,特别是在处理大量字符串的场景下,如文本分析和大数据处理。在Android应用开发中,内存管理尤其...

    Arduino 分割字符串库,strFenGe.rar

    通常,它会提供一个或多个方法,如 `split()`,接收一个字符串和分隔符作为参数,返回一个字符串数组或列表。这样,用户就可以像在高级语言中那样,通过索引访问和处理分割后的子字符串,使得代码更简洁,易于理解。...

    关于split笔记

    `split`函数在字符串处理中扮演着核心角色,掌握其使用方法和正则表达式的高级技巧对于高效编程至关重要。通过本文的学习,希望读者能够熟练运用`split`函数解决实际问题,并灵活运用正则表达式进行复杂字符串的解析...

    string中显示特定字符串

    在编程领域,`string`(字符串)是一种常见且重要的数据类型,用于表示一串字符序列。在各种编程语言中,如Python、Java、C++、JavaScript等,处理字符串时经常需要查找并显示特定的子串。这个任务的核心是了解如何...

    10个Java经典的String面试题!.zip

    在Java编程语言中,String类是使用最广泛的类之一,特别是在面试中,String相关的知识点往往是考察程序员基础功底的重要部分。下面将详细讲解这10个经典的Java String面试题,帮助你深入理解String的本质和使用技巧...

    string check

    在IT领域,字符串(String)是编程中非常基础且重要的数据类型,用于表示文本信息。在许多编程语言中,如Java、Python、C++等,都有专门的字符串处理方法和库。"string check"通常指的是对字符串进行各种验证或检查...

    api_String.zip_brain2bi_java

    6. **分割字符串**:`split(String regex)`方法根据正则表达式将字符串分割成数组。 7. **连接操作**:`concat(String str)`方法将两个字符串拼接在一起。 8. **转换为字符数组**:`toCharArray()`将字符串转换为...

    WindowsFormsApp1_stringc#_

    - **Split()**:这个方法根据指定的分隔符将字符串拆分为字符串数组,例如`string[] parts = str.Split(';');`。 - **Join()**:与Split相反,`string joined = String.Join(",", parts);`将数组元素合并成一个...

    Javascript中的Split使用方法与技巧

    下面我们将详细探讨`split()`的使用方法、相关技巧以及在实际应用中的示例。 ### `split()`的基本用法 `split(separator, limit)`方法接收两个参数: 1. **separator**:这是必需的参数,用于定义分割字符串的...

    C# String类型判断数据源码

    4. **字符串操作**:String类提供了丰富的成员方法,如`Substring()`截取子串,`Trim()`去除两端空白,`ToLower()`和`ToUpper()`转换为小写和大写,`Replace()`替换子串,`Split()`拆分字符串等。 5. **字符串格式...

    StringManipulation-9.9.0

    5. **字符串分割**:`split()`方法允许我们根据指定的分隔符将字符串分割成多个部分,返回一个字符串数组。 6. **格式化字符串**:`format()`方法来自`java.util.Formatter`,可以按照指定的格式模板来生成字符串,...

    C#字符串常用方法和实例,适合初学者

    在某些场景下,字符串的比较需要忽略大小写差异,这时可以使用`Equals()`方法配合`StringComparison.OrdinalIgnoreCase`参数。例如: ```csharp bool b = "asd".Equals("ASD", StringComparison.OrdinalIgnoreCase)...

    Java中String性能优化

    - `String.equals()`:在进行字符串比较时,`equals()`方法通常比`equalsIgnoreCase()`更快,因为前者不涉及大小写的转换。 4. 使用StringBuilder或StringBuffer: 当需要构建动态字符串时,优先考虑使用...

    C#中使用split分割字符串的几种方法小结

    在C#编程语言中,`Split`方法是一个非常实用的功能,它允许我们将字符串按照特定的分隔符切割成多个子字符串。以下是对标题和描述中提到的C#中使用`Split`方法分割字符串的几种常见方法的详细说明: 1. **第一种...

    Hlw.zip_split

    在大多数语言中,`split()`接收一个参数,即作为分隔符的字符串或者字符。这个分隔符会在原始字符串中寻找,然后在找到的位置将字符串切割。返回的结果是一个包含所有子字符串的数组。例如,在Python中,如果你有一...

    c#中如何使用spilt分隔数据

    ### C#中使用Split方法分割字符串的多种技巧 在C#编程语言中,处理字符串是一项常见的任务。其中,`Split`方法是一种非常实用且高效的方式来根据特定的分隔符将字符串分割成数组。本文将详细介绍C#中使用`Split`...

Global site tag (gtag.js) - Google Analytics