首页 > 解决方案 > 如何在Java中使用分隔符在所有大写单词之后拆分字符串?

问题描述

我正在尝试按如下方式解析此字符串:

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++;
    }

标签: javastringparsingdelimiter

解决方案


可以使用不同的方法正确完成,但使用扫描仪分隔符的方法:

parse.useDelimiter("(?<=[A-Z])\\s");

这会拆分前面有大写字母的空格。

并非在所有情况下都完全正确,但应该适用于解析 SHOUTED KEYWORDS 格式化 SQL 的情况。


推荐阅读