【发布时间】:2013-01-07 23:42:41
【问题描述】:
我最近问了一个类似的问题,但我需要更多帮助。
用户将能够输入一个字符串,例如:
"-5-1/-2"
需要:用+,-,*,/,(,)分隔 和负数应该保持在一起,在这种情况下 -5 和 -2 应该保持在一起。
这是我目前拥有的:
String userStrWithoutSpaces=userStr.replaceAll(" ", "");
String[] tokens = userStrWithoutSpaces.split("(?<=[\\-+*/=()])|(?=[()\\-+*/=])");
除了将负数保持在一起之外,这还有效。
提前致谢。
【问题讨论】:
-
为什么不使用实际的解析器?
-
我同意,有一些图书馆和这样的图书馆
-
你走在正确的轨道上,所以要坚持下去。虽然如果你需要一个快速修复,解析器!!
-
请注意,大多数算术表达式的解析器(我相信)将减号视为一元运算符,而不是数字的一部分;通常,它会使事情变得更加一致和简单。
-
如果你想解析这样的数学表达式,正确的方法是使用shunting yard algorithm。使用普通类型的解析器很难做到。
标签: java arrays string math split