如何在Roblox Studio中将字符串作为算式进行运算?
字符串算式运算结果获取方案
适用场景说明
你已经拼接完成仅含四则运算的算式字符串,仅需获取运算结果,可参考以下不同场景的实现方案:
1. 输入完全可信的场景(仅为你自定义生成的算式,无外部不可控输入
直接调用语言内置的表达式执行方法即可,实现成本最低:
- Python 示例
formula = "1+2-1+9-3" res = eval(formula) # 输出结果为 8
- JavaScript 示例
const formula = "1+2-1+9-3" const res = eval(formula) // 输出结果为 8
注意:该方案仅能在你100%确定输入内容可控时使用,不可信输入会导致任意代码执行的安全风险。
2. 输入不可信的场景(包含用户提交等外部来源输入)
自己实现简单的表达式解析逻辑,规避安全风险,以下是仅支持加减运算的实现示例,可根据需求扩展支持乘除、括号等规则:
def calc_formula(formula: str) -> int: res = 0 current_num = 0 # 默认第一个数为加项 op = '+' for char in formula: if char.isdigit(): current_num = current_num * 10 + int(char) else: # 遇到运算符时结算上一次运算 if op == '+': res += current_num elif op == '-': res -= current_num op = char current_num = 0 # 结算最后一个数字 if op == '+': res += current_num elif op == '-': res -= current_num return res print(calc_formula("1+2-1+9-3")) # 输出结果为 8
如果需要支持更复杂的运算规则,可以引入对应语言的专门表达式解析库,比如Python的ast.literal_eval(仅支持字面量运算)、simpleeval等,无需自己从零实现全量解析逻辑。
内容的提问来源于stack exchange,提问作者Triple tree
相关产品推荐
相关产品推荐

