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

时间:2015-05-14 07:13:44

标签: java regex string parsing decode

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. Locationoman
  5. 1
  6. NULL
  7. 3.33333E + 15
  8. 0
  9. NULL
  10. -1
  11. NULL
  12. NULL
  13. NULL
  14. NULL
  15. NULL
  16. NULL
  17. NULL
  18. NULL
  19. NULL
  20. NULL
  21. NULL
  22. NULL
  23. 1
  24. NULL
  25. 50036
  26. 1.42771E + 12
  27. 0
  28. NULL
  29. 0
  30. NULL
  31. NULL
  32. NULL
  33. NULL
  34. NULL
  35. NULL
  36. NULL
  37. NULL
  38. 2
  39. 0
  40. 1
  41. 3
  42. 0
  43. 1
  44. Ť
  45. ˚F
  46. ˚F
  47. 0
  48. -1
  49. 302
  50. 50036
  51. 50036
  52. 0
  53. 0
  54. 0
  55. 0
  56. NULL
  57. NULL
  58. NULL
  59. NULL
  60. NULL
  61. NULL
  62. NULL
  63. NULL
  64. NULL
  65. NULL
  66. NULL
  67. NULL
  68. NULL
  69. 3
  70. NULL
  71. NULL
  72. NULL
  73. 2
  74. 1
  75. 1
  76. 1
  77. 3
  78. 1
  79. 1
  80. 1
  81. 50036
  82. 0
  83. 1
  84. 0
  85. OmanPrepaid
  86. 0
  87. blrfts186_f861
  88. CCC_USER_257
  89. a082000000000033
  90. 16436113650
  91. NULL
  92. NULL
  93. 检查第91个值,所有双引号的值都在一个索引处。请帮帮我。谢谢你提前

1 个答案:

答案 0 :(得分:1)

您可以像这样使用正则表达式:

String[] tokens = str.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");

您的字符串数组现在包含您想要的项目,第91项未分割,因为它位于引号之间。

如果您还想从结果元素中删除引号,则可以为所有项执行for循环:

for(int i = 0; i < tokens.length; i++) {
    tokens[i] = tokens[i].replace('\"', '');
}

或仅针对一个项目:

tokens[90] = tokens[90].replace('\"', '');