如何在不区分大小写的情况下在Java中拆分字符串?

问题描述

如何在Java中不区分大小写的情况下拆分字符串?

String sql = SELECT * FROM employee OFFSET 0 LIMIT 25;
String[] sqlWithoutPagination = sql.split("offset");

OFFSET可以位于lower-case/upper-case中。

解决方法

您不必使用RegEx,只需使用indexOftoLowerCase

String sql = "SELECT * FROM employee OFFSET 0 LIMIT 25";
int idx = sql.toLowerCase().indexOf("offset");
String sqlWithoutPagination = sql.substring(0,idx);

当然,您必须检查idx是否等于0。

,

我实际上建议在不区分大小写的模式下在此处使用String#replaceAll,以在出现它们时仅剥离OFFSETLIMIT子句:

String sql1 = "SELECT * FROM employee OFFSET 0 LIMIT 25";
String sql1New = sql1.replaceAll("(?i)(?:\\s+OFFSET \\d+)?\\s+LIMIT \\d+$","");
System.out.println(sql1 + "\n" + sql1New);
String sql2 = "SELECT * FROM employee LIMIT 25";
String sql2New = sql2.replaceAll("(?i)(?:\\s+OFFSET \\d+)?\\s+LIMIT \\d+$","");
System.out.println(sql2 + "\n" + sql2New);

此打印:

SELECT * FROM employee OFFSET 0 LIMIT 25
SELECT * FROM employee
SELECT * FROM employee LIMIT 25
SELECT * FROM employee
,

使用正则表达式如下所示

String sql = "SELECT * FROM employee OFFset 0 LIMIT 25";
System.out.println(sql.split("(?i)offset")[0]);