【问题标题】:How to split a string in java and include the delimiter如何在java中拆分字符串并包含分隔符
【发布时间】:2017-03-22 18:01:14
【问题描述】:

我想使用分隔符“AAAA”拆分此字符串“AHHHAAAAARTFUHLAAAAAAHV”并将其保存到包含分隔符的数组中。 (期望的输出:[AHHHA, AAAA, RTFUHLA, AAAA ,HV])。我有以下代码,但输出与我想要的输出不同。

  String y = "AHHHAAAAARTFUHLAAAAAHV";
  System.out.println(Arrays.toString(y.split("((?<=AAAA)|(?=AAAA))")));

输出: [AHHH,A,AAA,A,RTFUHL,A,AAA,A,HV]

【问题讨论】:

  • 试试Arrays.toString(y.split("(?=AAAA[^A]|(?&lt;=AAAA(?=[^A])))")) ?
  • 您想要的拆分规则不明确。 AHHHAAAAA 可以拆分为 AHHH, AAAA, A 或 AHHHA, AAAA。您对AAAAAAAAA (9 As) 的预期结果是什么? AAAAA, AAAA,或A, AAAA, AAAA,或...?
  • @Pavneet_Singh 哇!谢谢你完成了这项工作!谢谢你帮了很多忙。
  • @Socowi 我是这么认为的。我实际上是在玩弄拆分功能,所以我很困惑。顺便说一句,非常感谢你的想法

标签: java string split delimiter


【解决方案1】:

你可以使用(?=AAAA[^A]|(?&lt;=AAAA(?=[^A])))

(?=AAAA[^A] :前瞻匹配 AAAA 和非 A 字符

|:或

(?&lt;=AAAA(?=[^A]))) :正向后视匹配 AAAA 与前瞻以确保没有 A 字符

String y = "AHHHAAAAARTFUHLAAAAAHV";
System.out.println(Arrays.toString(y.split("(?=AAAA[^A]|(?<=AAAA(?=[^A])))")));

输出:

[AHHHA, AAAA, RTFUHLA, AAAA, HV]

【讨论】:

  • 也许(?=AAAA(?!A)|(?&lt;=AAAA(?!A)))在这里也很好用。
  • @WiktorStribiżew 我已经测试了我的负面展望,但似乎他们花费的时间不多,尽管他们肯定很简洁
  • 实际上,我相信它们的工作方式也会有所不同。无论如何,以防万一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 2014-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多