如何在ruby中乘以“5x3”字符串?

时间:2011-04-07 01:30:15

标签: ruby

如何将此字符串乘以:“5x3”并将总数作为整数?

4 个答案:

答案 0 :(得分:5)

我的理念倾向于“将其纳入数据结构,使用我们用于处理数据结构的优秀工具,然后在必要时转换回来”。

"5x3".split('x').map(&:to_i).reduce(&:*)

答案 1 :(得分:3)

有两种安全的方法:使用$SAFE设置为1或更高的eval(多高取决于您的应用程序),或使用专用的数学解析器。我推荐第二种方法(更难以解决这个问题),如果你需要的不仅仅是基本的算术评估,那么只使用eval方法。

要执行此操作,请使用expression_parser安装gem install expression_parser gem。然后,您可以使用以下代码来评估数学表达式:

require 'expression_parser'
parser = ExpressionParser::Parser.new
p p.parse("5 * 3") 

这将打印出15.0

答案 2 :(得分:1)

试试这个:

eval("5x3".gsub("x","*"))

或者如果你是一个正常的偏执狂:

eval(str.gsub('x','*').gsub(/[^\d+*-\/]/,''))

答案 3 :(得分:1)

在尝试消毒你的输入(至少一点点)时,这是我的建议:

def multiply_from_string(string)
  string.split('x').map { |number| number.to_i }.inject(&:*)
end

仍然,有点荒谬。