我想拆分从数据库结果集行生成的以下字符串。
示例行:
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/