0

我正在编写代码,我需要将一个字符串拆分为 3 个不同的部分,每个部分都需要自己的分隔符才能将单个部分取出。我不擅长正则表达式,我看过的教程并没有很好地解释这一点。因此,如果您可以将我推向正确的方向,并且如果您有答案,请解释它的每个部分,那就太好了!

我的输入是

1 imported bottle of perfume at 27.99
1 bottle of perfume at 18.99
1 packet of headache pills at 9.75
1 box of imported chocolates at 11.25

我想要的输出是每个有 3 个字符串。

"1" "imported bottle of perfume" "27.99"

代码:

String pattern = "[(\\d)][(\\w)][(\\d)]";
String[] splits = data[i].split(pattern);
4

2 回答 2

5

您可以在数字前面的空格或at由空格包围的字符串上进行拆分。你会为此使用环视

data[i].split("(?<=\\d)\\s+|\\s+at\\s+");

(?<=...)是look-behind 的语法。同样,(?=...)对于前瞻。环视是 0 长度的断言。他们只是检查是否存在特定模式之后或之前的模式。

因此,(?<=\\d)\\s+将搜索\\s前面有数字的 - \\d

于 2013-09-19T05:56:55.517 回答
-1

你可以做的最简单的方法是首先用“at”分割,所以现在你有

"1 imported bottle of perfume" & "27.99" 

所以你的第一个问题解决了。

现在关于你的下一个问题

您可以做的只是检查第一个空格,然后在空格使用 parseInt 之前。这一切。可能这是简单的技术。为了理解。

于 2013-09-19T06:01:21.390 回答