我想拆分从数据库结果集行生成的以下字符串。
示例行:
A)(74,“和那里”,“是一辆汽车”,“在”,“车库男人”中,t)
B)(17,account3 ,,,, t)
我想要一个输出如下(管道|来分隔分割元素):
A)74 |那里|是一辆车|在|车库男人|吨
B)17 | account3 | | | |吨
我希望零长度值在我的应用程序中存储为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(,)不会丢弃非零长度值...但确实如此。我做错了什么?
答案 0 :(得分:3)
也许你可以试试.split("[()\"]*,{1}[()\"]*")
;
[,()\"]+
之前的表达式用户将使用多个逗号或任何其他分隔符作为分隔符。例如,,,
将被视为一个[],[]
。上面评论的表达式,期望零个或多个分隔符后面只跟一个逗号,这也可以跟零个或多个分隔符。
答案 1 :(得分:0)
为什么你没有使用String.replace or replaceall,它将作为你当前的程序,但如果你需要跳过字符串的空白部分,你应该首先
答案 2 :(得分:0)
int
split()
参数表示结果数组的最大长度。所以我认为你应该自己决定使用方法String#isempty()
。
查看更多详情:
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String,int)
答案 3 :(得分:0)
public void refreshSearchTable (ArrayList<String> newData){
int noOfRows = newData.size();
int noOfColumns = gui.getTableSearchResultHeader().length + 2;
Object[][] tempList = new Object[noOfRows][noOfColumns];
String rowResult = "";
String delims = "[()\"]*,{1}[()\"]*";
String [] tokens;
Object [] elements = newData.toArray();
int j = 0;
for (int i = 0; i < noOfRows; i++){
rowResult = elements[i].toString();
if (rowResult.startsWith("(")){
rowResult = rowResult.substring(1);
}
if (rowResult.endsWith(")")){
rowResult = rowResult.substring(0, rowResult.length()-1);
}
System.out.println("rowresult: " + rowResult);
tokens = rowResult.split(delims);
for (String t : tokens){
System.out.println("j: " + j + "t: " + t);
j++;
}
j=0;
}
输出:
rowresult: 74,"and there","is a car","in the","garage man",t
j: 0t: 74
j: 1t: and there
j: 2t: is a car
j: 3t: in the
j: 4t: garage man
j: 5t: t