通过将字符串拆分为条件子字符串来获取java数组

时间:2014-06-05 07:25:14

标签: java arrays regex string

我有一个java字符串' str'

String str= " 1p   qrn qr2 qst   1a1 4at   qa qb1  st1 sp su";

我想拆分它以获得以下'部分'阵列

String [] parts={"1p","qrn qr2 qst" ,"1a1 4at" ,"qa qb1" ,"st1 sp su"};

'部分的元素'从char 0-9,a,q,s开始。

帮助我找到一个合适的正则表达式:

String [] parts= str.split(a suitable regex);

或任何其他可以做到的替代方案。

3 个答案:

答案 0 :(得分:5)

这个正则表达式适合你:

[\daqs][\w ]*?(?=\s{2}|$)

Working Demo

对于拆分使用此正则表达式:

\s{2,}(?=[\daqs])

Working Demo 2

Java代码:

String [] parts = str.split("\\s{2,}(?=[\\daqs])");
System.out.println(Arrays.toString(parts)); 

答案 1 :(得分:1)

使用您的字符串,这将起作用:

String[] yourArray = subjectString.split("^\\s+|\\s{2,}");

请参阅online demo底部的输出。

这是如何运作的?

看起来您的令牌被多个地方分隔开来。这是我们用来分割的内容:\s{2,} 另外,我们要删除字符串开头的任何空格,因此我们将其添加到拆分条件:^\s+

答案 2 :(得分:0)

我希望我能发表评论而不是回答,但不幸的是我不能这样做,所以我只能做一个答案。你所说的并没有真正发挥作用 - 好像它始于这些角色,它最终将成为

String [] parts={"1p", "qrn", "qr2", "qst" ,"1a1", "4at" ,"qa", "qb1" ,"st1", "sp", "su"};

所以要回答你的实际问题,

[0-9aqs] \ W +

应该按你的意愿工作。如果这不是你想要的,那就澄清它们是如何分开的,因为你如何分裂并不适合"部分元素'以char 0-9,a,q,s开始。"

相关问题