用逗号分隔拆分字符串,但无法找到通用解决方案
Split String by comma separated , but not able to find generic solution
String str = "\"{\"\"oman\"\"\",333,333,Locationoman,1,NULL,3.33333E+15,0,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,,NULL,NULL,NULL,1,NULL,50036,1.42771E+12,0,NULL,0,NULL,NULL,NULL,,NULL,NULL,NULL,NULL,2,0,1,3,0,1,T,F,F,0,Volume,-1,302,50036,50036,0,0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,NULL,NULL,2,1,1,1,3,1,1,1,50036,0,1,0,OmanPrepaid,0,blrfts186_f861,CCC_USER_257,a082000000000033,\"16,436,113,650\",,NULL}";
我有一个这样的字符串,但输出应该是这样的
- 阿曼
- 333
- 333
- 位置人
- 1
- 空
- 3.33333E+15
- 0
- 空
- -1
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 1
- 空
- 50036
- 1.42771E+12
- 0
- 空
- 0
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 2
- 0
- 1
- 3
- 0
- 1
- T
- F
- F
- 0
- 成交量
- -1
- 302
- 50036
- 50036
- 0
- 0
- 0
- 0
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 3
- 空
- 空
- 空
- 2
- 1
- 1
- 1
- 3
- 1
- 1
- 1
- 50036
- 0
- 1
- 0
- 阿曼预付
- 0
- blrfts186_f861
- CCC_USER_257
- a082000000000033
- 16,436,113,650
- 空
- 空
检查第 91 个值,双引号中的所有值都在一个索引中。请帮助我。提前致谢
您可以像这样使用正则表达式:
String[] tokens = str.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
您的字符串数组现在包含您想要的项目,第 91 项未拆分,因为它在引号之间。
如果您还想从结果元素中删除引号,您可以对所有项目执行 for 循环:
for(int i = 0; i < tokens.length; i++) {
tokens[i] = tokens[i].replace('\"', '');
}
或者只有一项:
tokens[90] = tokens[90].replace('\"', '');
String str = "\"{\"\"oman\"\"\",333,333,Locationoman,1,NULL,3.33333E+15,0,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,,NULL,NULL,NULL,1,NULL,50036,1.42771E+12,0,NULL,0,NULL,NULL,NULL,,NULL,NULL,NULL,NULL,2,0,1,3,0,1,T,F,F,0,Volume,-1,302,50036,50036,0,0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,NULL,NULL,2,1,1,1,3,1,1,1,50036,0,1,0,OmanPrepaid,0,blrfts186_f861,CCC_USER_257,a082000000000033,\"16,436,113,650\",,NULL}";
我有一个这样的字符串,但输出应该是这样的
- 阿曼
- 333
- 333
- 位置人
- 1
- 空
- 3.33333E+15
- 0
- 空
- -1
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 1
- 空
- 50036
- 1.42771E+12
- 0
- 空
- 0
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 2
- 0
- 1
- 3
- 0
- 1
- T
- F
- F
- 0
- 成交量
- -1
- 302
- 50036
- 50036
- 0
- 0
- 0
- 0
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 空
- 3
- 空
- 空
- 空
- 2
- 1
- 1
- 1
- 3
- 1
- 1
- 1
- 50036
- 0
- 1
- 0
- 阿曼预付
- 0
- blrfts186_f861
- CCC_USER_257
- a082000000000033
- 16,436,113,650
- 空
- 空
检查第 91 个值,双引号中的所有值都在一个索引中。请帮助我。提前致谢
您可以像这样使用正则表达式:
String[] tokens = str.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
您的字符串数组现在包含您想要的项目,第 91 项未拆分,因为它在引号之间。
如果您还想从结果元素中删除引号,您可以对所有项目执行 for 循环:
for(int i = 0; i < tokens.length; i++) {
tokens[i] = tokens[i].replace('\"', '');
}
或者只有一项:
tokens[90] = tokens[90].replace('\"', '');