用不同的分隔符拆分 JAVA

Split with different delimiters JAVA

假设我有这样的数据:

"IAB98D Daewoo Cielo 15487964 PARABRISAS TRA"

"TAI64A Fiat Siena 13283191 PARACHOQUE DEL-CAPOT"

"RAD34B Toyota Corolla 11934274 TECHO-PUERTA TRA IZQ"

其中:第一个元素 = 汽车 ID - 第二个元素 = 汽车品牌 - 第三个元素 = 汽车型号 - 第四个元素 = 车主 ID - 第五个元素及以“-”分隔的部分为损坏部件汽车

当我使用 .split(" ") 时,前四分之一的元素工作正常,但在损坏的部分是事情变得棘手的地方,例如在第二个数组部分 "PARACHOQUE DEL-CAPOT" 这意味着有 2损坏的部分 "PARACHOQUE DEL" 和 "CAPOT" 如果我使用 .split(" ") 它会将 "PARACHOQUE DEL" 分开到 "PARACHOQUE" 和 "DEL" 我不希望这样发生是因为那只是 1 个损坏的部分,有什么办法可以实现这一目标吗?或任何建议?提前致谢!

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

第一次调用 split 是 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]

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

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

这输出:

[PARACHOQUE DEL, CAPOT]

在使用索引 4.

之前,您需要确保 fields 数组中确实有 5 个元素