使用"4 / 10 + 5 x 3"
你将如何解析Ruby中的字符串并评估数学?
注意:希望解决方案在可能的情况下不涉及正则表达式
答案 0 :(得分:2)
您可以使用eval
将字符串计算为Ruby代码。
eval(string [, binding [, filename [,lineno]]])
以字符串形式计算Ruby表达式。如果给出了绑定,那么 必须是Binding对象,评估在其上下文中执行。 如果存在可选的filename和lineno参数,它们将会出现 在报告语法错误时使用。
在你的情况下
string = '4 / 10 + 5 * 3'
eval(string)
请记住,您发布的字符串不是有效的Ruby代码。实际上,x
无效,正确的运算符为*
。
答案 1 :(得分:1)
str = "4 / 10 + 5 x 3"
eval(str.tr("x","*"))
如果您想保留x
,可以使用tr。
eval
可以运行任何内容,因此不要尝试使用用户输入。
答案 2 :(得分:0)
str = "4 / 10 + 5 x 3"
result = eval(str)
答案 3 :(得分:0)
由于您尝试使用字符x
进行乘法,因此当前代码将抛出语法错误。
您应该使用*
运算符。
之后使用eval()
很简单。但通常这应该避免。
result = eval("4 / 10 + 5 * 3")
对于数学解析,我会调查这个gem,我自己没有尝试过,但似乎比原始eval更好。