如何在Java中使用分隔符在所有大写单词之后拆分字符串?
Posted
技术标签:
【中文标题】如何在Java中使用分隔符在所有大写单词之后拆分字符串?【英文标题】:How to split a string after all uppercase words using a delimiter in Java? 【发布时间】:2021-11-18 16:28:51 【问题描述】:我正在尝试按如下方式解析此字符串:
CREATE TABLE tbl_1 (a1 int, a2 varchar(20));
收件人:
CREATE TABLE
tbl_1 (a1 int, a2 varchar(20));
我将如何在 Java 中使用分隔符来执行此操作?
我能够解析:
CREATE DATABASE db_1;
收件人:
CREATE DATABASE
db_1;
使用此代码,但它不适用于帖子开头的语句。
public static void read()
Scanner scanner = new Scanner(System.in);
System.out.print("-->");
String input = scanner.nextLine();
String [] num = new String[10];
Scanner parse = new Scanner(input);
parse.useDelimiter("\s((?=[a-z][a-z]))");
int i = 0;
while (parse.hasNext())
num[i] = parse.next();
System.out.println("Output " + i + " is: " + num[i]);
if(num[i].contains("CREATE DATABASE"))
System.out.println("YOOOOOOO");
i++;
【问题讨论】:
【参考方案1】:可以使用不同的方法正确完成,但使用扫描仪分隔符的方法:
parse.useDelimiter("(?<=[A-Z])\\s");
这会分割前面有大写字母的空格。
并非完全在所有情况下都正确,但应该适用于解析 SHOUTED KEYWORDS 格式的 SQL 的情况。
【讨论】:
【参考方案2】:切换到这个正则表达式:
parse.useDelimiter("(?=tbl)");
你也可以传递任何你想要的分隔符,用:
String delimiter = "tbl";
parse.useDelimiter("(?="+delimit+")");
这会在您想要的 String
之前找到第一个出现的空格。
【讨论】:
以上是关于如何在Java中使用分隔符在所有大写单词之后拆分字符串?的主要内容,如果未能解决你的问题,请参考以下文章