将一个字符串拆分为3个字符串,每个字符串都有自己的分隔符JAVA

时间:2013-09-19 05:53:54

标签: java regex string

我正在编写代码,我需要将一个字符串分成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);

2 个答案:

答案 0 :(得分:5)

您可以拆分以数字开头的空格或由空格包围的at字符串。您可以使用look-arounds

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

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

因此,(?<=\\d)\\s+会搜索前面有数字\\s的{​​{1}}。

答案 1 :(得分:-1)

您可以采取的简单方法首先按&#34; at&#34;所以现在你有了

"1 imported bottle of perfume" & "27.99" 

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

现在关于你的下一个问题

你能做什么只检查第一个空间&amp;然后在空间使用parseInt之前。那一切。可能这是一个简单的技术。为了理解。