假设我有这样的数据:
" 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个受损的部分有没有办法实现这一目标?或任何建议?提前致谢!
答案 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个元素。