用逗号分隔拆分字符串,但无法找到通用解决方案

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}";

我有一个这样的字符串,但输出应该是这样的

  1. 阿曼
  2. 333
  3. 333
  4. 位置人
  5. 1
  6. 3.33333E+15
  7. 0
  8. -1
  9. 1
  10. 50036
  11. 1.42771E+12
  12. 0
  13. 0
  14. 2
  15. 0
  16. 1
  17. 3
  18. 0
  19. 1
  20. T
  21. F
  22. F
  23. 0
  24. 成交量
  25. -1
  26. 302
  27. 50036
  28. 50036
  29. 0
  30. 0
  31. 0
  32. 0
  33. 3
  34. 2
  35. 1
  36. 1
  37. 1
  38. 3
  39. 1
  40. 1
  41. 1
  42. 50036
  43. 0
  44. 1
  45. 0
  46. 阿曼预付
  47. 0
  48. blrfts186_f861
  49. CCC_USER_257
  50. a082000000000033
  51. 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('\"', '');