【问题标题】:Split with different delimiters JAVA用不同的分隔符分割 JAVA
【发布时间】:2015-07-08 19:25:14
【问题描述】:

假设我有这样的数据:

“IAB98D 大宇 Cielo 15487964 PARABRISAS TRA”

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

“RAD34B 丰田卡罗拉 11934274 TECHO-PUERTA TRA IZQ”

其中:第 1 个元素 = 汽车的 ID - 第 2 个元素 = 汽车的品牌 - 第 3 个元素 = 汽车的型号 - 第 4 个元素 = 车主 ID - 第 5 个元素,以“-”隔开的是损坏的零件汽车

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

【问题讨论】:

  • 请向我们展示您如何“使用 .split(" ")”。您如何处理像阿尔法罗密欧这样的品牌?
  • 哦,第一个答案帮助了我,该数据来自我大学考试中使用的 .class,但所有品牌都只有 1 个字

标签: java arrays split


【解决方案1】:

您可以通过 2 次调用 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 个元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2020-05-23
    • 2015-10-06
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多