Java String split() 零长度值的分隔符

标签 java string delimiter zero

我想拆分从数据库结果集行生成的以下字符串。

示例行:

A)(74,“那里”,“有一辆汽车”,“在”,“车库 worker ”,t)

B) (17,account3,,,,t)

我想要如下输出(管道|分隔拆分元素):

A) 74 |那里|是一辆车|在 |车库人| t

B) 17 |帐户3 | | | | t

我希望将零长度值存储为 null 在我的应用程序中。这是我的源代码:

public void refreshSearchTable (ArrayList<String> newData){
        int noOfRows = newData.size();
        int noOfColumns = gui.getTableSearchResultHeader().length + 1;
        Object[][] tempList = new Object[noOfRows][noOfColumns];
        String rowResult = "";
        String delims = "[,()\"]+";
        String [] tokens;
        Object [] elements = newData.toArray();

        int j = 0;
        for (int i = 0; i < noOfRows; i++){
            rowResult = elements[i].toString();
            System.out.println("rowresult: " + rowResult);
            tokens = rowResult.split(delims, -1);
            for (String t : tokens){

                System.out.println("j: " + j + "t: " + t);

                if (j == 1){ ... }
                else if (j==2){ ... }
                                ...

                j++;
            }
            j=0;
        }
    }

"[,()\"]+"对于非零长度值工作得很好。我能够根据索引值 j 选取正确的子字符串。我读过将负值传递给split(, ) 不会丢弃非零长度值...但它会丢弃。我做错了什么?

最佳答案

也许你可以尝试使用 .split("[()\"]*,{1}[()\"]*");

[,()\"]+ 之前的表达式用户将使用多个逗号或通知的任何其他分隔符作为分隔符。例如 ,, 将被考虑1,[],[] 也是如此。上面注释的表达式期望零个或多个分隔符后仅跟一个逗号,并且后面也可以跟零个或多个分隔符。

关于Java String split() 零长度值的分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11098649/

相关文章:

ruby - 如何在不保留分隔符的情况下拆分字符串?

java - 为什么这个 Java 长计算返回 NaN?

java - 带有正则表达式的 Apache VFS resolveFile

c# - 打印时如何确定字符串的宽度?

.net - 对空字符串和 DBNull 感到困惑

perl - 在 perl 中处理嵌套分隔符

java - 如何使用扫描仪确定行尾?

Java Optional if object is not null - 返回方法结果,如果为 null - 返回默认值

java - 在java中用空格分割字符串数据

c++ - 为什么用 std::string 和 std::string& 相似的函数初始化字符串?