与不同的分隔符JAVA分开

时间:2015-07-08 19:25:14

标签: java arrays split

假设我有这样的数据:

  

" IAB98D Daewoo Cielo 15487964 PARABRISAS TRA"

     

" TAI64A菲亚特锡耶纳13283191 PARACHOQUE DEL-CAPOT"

     

" RAD34B Toyota Corolla 11934274 TECHO-PUERTA TRA IZQ"

其中:第1个元素=汽车的ID - 第2个元素=汽车的品牌 - 第3个元素=汽车的型号 - 第4个元素=所有者的ID - 第5个元素及以上由&分隔#34; - "是汽车的损坏部分

当我使用时,.split("")适用于前四个元素,但在损坏的部分中,事情变得棘手,例如在第二个数组部分" PARACHOQUE DEL -CAPOT"这意味着有2个损坏的部件" PARACHOQUE DEL"和" CAPOT"如果我使用.split("")它将分开" PARACHOQUE DEL"到" PARACHOQUE"和" DEL"而且我不希望这种情况发生,因为只有1个受损的部分有没有办法实现这一目标?或任何建议?提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以通过2次调用split来完成此操作,第一次将字段限制为5字段:前4个字段和损坏的部分。

第一次分组调用是two-arg overload of split,有限制。

此代码利用了以下事实:即使有更多分隔符,限制字段也会将原始字符串的剩余部分堆积到最后一个元素中。

String line = "TAI64A Fiat Siena 13283191 PARACHOQUE DEL-CAPOT";
String[] fields = line.split("\\s+", 5);
System.out.println(Arrays.toString(fields));

这将为您生成5个字段:

[TAI64A, Fiat, Siena, 13283191, PARACHOQUE DEL-CAPOT]

第二次分组调用是one-arg overload of split。 然后,您可以split "-"上的最后一个元素来提取损坏的部分。

String damaged = fields[4];
String[] parts = damaged.split("-");
System.out.println(Arrays.toString(parts));

输出:

[PARACHOQUE DEL, CAPOT]

在使用索引fields之前,您需要确保4数组中确实有5个元素。