java - 根据未知值拆分字符串次数

标签 java arrays

我正在尝试创建一个由用户在字符“,”上拆分填充的字段。但是,用户文本中可能存在不同数量的逗号。我将其用于 JDBC,用户输入整个查询,我可以将他们选择的列保存在数组中。

例如,我想做一个简单的分割,如下所示。

String usr = "SELECT NAME, DATE, AGE, PETS FROM CUSTOMER";
String[] parts = usr.split(",");
String[] part1 = parts[0];
String[] part2 = parts[1];
String[] part3 = parts[2];

仅生成最少数量的部分数组来保存字符串,而不是预设数组数量,而不会创建大量可能为空的数组。有没有简单的方法可以做到这一点?

最佳答案

尝试下面的解决方案:

private List<String> getColumnNames( String query, Connection conn )
{
    List<String> columnNames = new ArrayList<>();
    try
    {
        PreparedStatement ps = conn.prepareStatement(query);
        ResultSetMetaData meta = ps.getMetaData();
        if ( meta != null )
        {
            for ( int i = 1; i <= meta.getColumnCount(); i++ ) //columns start with "1" not "0" for ResultSetMetaData.
            {
                columnNames.add( meta.getColumnName(i) );
            }
        }
    }
    catch ( SQLException e )
    {
        e.printStackTrace();
    }

    return columnNames;
}

此代码的作用是 - 它获取有关 ResultSet 的元数据,该元数据在执行语句时返回。但你不会执行它。它只是为了检查查询的合理性并获取查询中的列!

PreparedStatement 已预编译,因此包含有关执行查询时将返回的 ResultSet元数据,但正如我所说不需要执行 - 这里的唯一目的是进行健全性检查并获取列名称。

关于java - 根据未知值拆分字符串次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44765772/

相关文章:

java - EclEmma 未能对抛出异常的方法进行计数

java - 拆分字符串,将元素放入带有两个可能的分隔符的列表中

java - 无法通过命令行添加类路径

c - 新的 LCD 有不同的像素布局,需要更有效的方法来转换数组缓冲区(工作方法太慢)

python - 我应该使用什么索引将 numpy 数组转换为 pandas 数据框?

java - instanceof 运算符在原始和包装器类型数组的情况下

java - 执行shell命令 `java.lang.ProcessBuilder`

java - 需要 java Regex 从特定字符串中删除/替换 XML 元素

javascript - 方法的返回值没有出现

arrays - 将数组内容推送到 DataFrame - Julia