我正在编写代码,我需要将一个字符串分成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);
答案 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之前。那一切。可能这是一个简单的技术。为了理解。