如何将此字符串乘以:“5x3”并将总数作为整数?
答案 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
仍然,有点荒谬。