Ruby 无需 eval 即可进行评估?

2023-11-22

如何在不使用 eval 的情况下评估数学字符串?

Example:

mathstring = "3+3"

无论如何,可以在不使用 eval 的情况下进行评估吗?

也许有正则表达式的东西..?


您必须或者eval它,或者解析它;既然你不想eval:

mathstring = '3+3'
i, op, j = mathstring.scan(/(\d+)([+\-*\/])(\d+)/)[0] #=> ["3", "+", "3"]
i.to_i.send op, j.to_i #=> 6

如果你想实现更复杂的东西,你可以使用RubyParser(正如@LBg 所写here- 你也可以看看其他答案)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby 无需 eval 即可进行评估? 的相关文章

随机推荐

  • 服务定位器、依赖注入(和容器)和控制反转

    我已经编程有一段时间了 但从来没有兴趣从理论上了解每个概念的含义 我可能正在使用各种编程概念 但我并不知道 服务定位器 对我来说 指的是通过减少代码量来加快开发速度的捷径记录 一个问题是 定位器可以仅引用名称空间 类 或者我可以拥有变量注册
  • 从 Enum 中的类初始化一个新对象

    我有一个名为 Plugins 的枚举 public enum Plugins ROTATING LINE plugin rotatingline RotatingLine class SNOW SYSTEM plugin snow Snow
  • Selenium 仅在使用无头 Chrome 时无法定位元素(Python)

    我刚刚开始学习 Selenium 需要使用云中的 jenkins 机器验证登录网页 该机器没有 GUI 我设法在具有 UI 的系统上成功运行该脚本 然而 当我修改脚本以无头运行时 它失败说无法定位元素 我的脚本如下 usr bin env
  • 如何在 Thymeleaf 中执行 if-else 操作?

    做一个简单的最好方法是什么if else在百里香叶 我想在 Thymeleaf 中实现相同的效果
  • Apache ProxyPass 和会话

    因此 我使用 Apache 将特定文件夹代理到 Glassfish 实例 我的conf中的规则是 ProxyPass folder http localhost 28083 ProxyPassReverse folder http loca
  • Windows 禁止文件和文件夹名称的完整列表

    在 Windows 上 禁止使用 com1 txt 或 lpt1 txt 等文件名 是否有 Windows 上所有禁止的文件和文件夹名称的列表 或文件和文件夹名称中的禁止字符 例如 无效字符列表为 gt 大于 冒号 双引号 正斜杠 反斜杠
  • 如何重写WebServiceHostFactory MaxReceivedMessageSize?

    那里有很多类似的问题 但我已经尝试了每个问题中的每一种解决方案都无济于事 我们有一个使用 WebServiceHostFactory 初始化的 Web 服务 但如果向其抛出超过 64k 的数据 我们会收到 400 错误请求 通常 只需增加
  • 在 Angular 2 中打印 Html 模板(Angular 2 中的 ng-print)

    我想在 Angular 2 中打印 HTML 模板 我已经对此进行了探索 我在 AngularJS 1 中得到了解决方案在 Angularjs 中打印 Html 模板 1 任何建议将不胜感激 这就是我在 angular2 中所做的 它类似于
  • Django 对“MEDIA_ROOT”做了什么?

    Django 是做什么的MEDIA ROOT确切地 我一直不明白 由于 Django 本身不提供静态媒体 并且您必须为其设置 apache 或类似的东西 为什么它关心它位于哪个目录 您不是唯一一个想知道的人 查看姜戈票 10650 根据 D
  • 确定当前文本选择包含哪些 DOM 元素

    我希望能够找出用户当前在浏览器中选择的文本中存在哪些 DOM 元素 document getSelection 将为我们获取当前选定的文本 但是我们如何确定该文本选择中包含哪些 DOM 元素呢 window getSelection 给你一
  • 如何为设置包(Root.plist)的文本字段提供占位符

    我想为设置包 Root plist 的文本字段提供占位符 是否可以 如果可以 如何 提前致谢 恐怕目前这是不可能的 我也试图这样做 但似乎找不到任何可行的解决方案 如果有帮助 应该放置此内容的官方文档是here
  • 短路与非短路操作员

    我理解下面的区别 至少对于Java if true false short circuiting boolean operator if true false non short circuiting boolean operator 但我
  • 什么时候需要 ScriptManager/ScriptManagerProxy?

    我认为我无法找到明确的答案 所以我会在这里问 什么时候需要 ScriptManager 或者在母版页上使用 ScriptManager 的情况下需要 ScriptManagerProxy 例如 假设我在 MasterPage 上有一个 Sc
  • pywin32 和 Excel。写入大量数据时出现异常

    我目前正在尝试使用 pywin32 库将大量数据写入 Excel 电子表格 作为我面临的问题的一个简单示例 使用以下代码生成 1000 个单元格 x 1000 个单元格的乘法表 import win32com client from win
  • 在管道处理期间可以从 spaCy 文档中删除令牌吗?

    我正在使用 spaCy 一个很棒的 Python NLP 库 来处理许多非常大的文档 但是 我的语料库中有一些我想在文档处理管道中消除的常见单词 有没有办法从管道组件内的文档中删除令牌 spaCy 的标记化是非破坏性的 因此它始终代表原始输
  • 从项目内的 JSON 文件读取

    我有一个名为资源在我的 WPF 项目中 我有一个设置 json在该目录内 我想从该文件中读取内容 在文件设置中我有构建操作 gt 嵌入资源 and 复制到输出目录 gt 始终复制我读了这样的文件 using StreamReader r n
  • MVC3 打开视图编译后出现奇怪的错误

    我目前正在使用 Razor 开发 MVC3 项目 我已经打开视图编译 以在编译时注意拼写错误等 一旦我在项目配置文件中打开 true 就会在编译过程中出现以下错误 错误1 在应用程序级别之外使用注册为allowDefinition Mach
  • d3 Sankey - 是否有可能影响或决定节点的放置?

    我正在使用 d3 js 的 Sankey 插件 有没有办法影响节点的自动放置 如果你比较下面两张图片 自动生成桑基图 https files secureserver net 0s3DEU5s3OZtqL 我手动重新排列后 https fi
  • 使用 RNDADDDENTROPY 将熵添加到 /dev/random

    我有一个设备会产生一些噪音 我想将其添加到嵌入式 Linux 系统中 dev random 设备的熵池中 我正在读 dev random 上的手册页我不太理解您传递给 RNDADDENTROPY ioctl 调用的结构 RNDADDENTR
  • Ruby 无需 eval 即可进行评估?

    如何在不使用 eval 的情况下评估数学字符串 Example mathstring 3 3 无论如何 可以在不使用 eval 的情况下进行评估吗 也许有正则表达式的东西 您必须或者eval它 或者解析它 既然你不想eval mathstr