【问题标题】:How do I convert a string to number which have operator inside it? [duplicate]如何将字符串转换为其中包含运算符的数字? [复制]
【发布时间】:2018-01-19 03:45:29
【问题描述】:

我有一个字符串,它由一个带有运算符的数字组成。比如:displayText =“123+12*23”。我想把它转换成数字,这样所有的数学运算都会被执行。知道我该怎么做

【问题讨论】:

  • 您正在寻找eval() 函数。
  • 您需要首先定义所有运算符及其优先级,因为这决定了可能解决方案的复杂性。
  • 阅读eval。但是使用时要小心(在评估之前检查字符串是否包含任何有害代码)。
  • eval() 不是必需的

标签: javascript


【解决方案1】:

您可以使用Function

let displayText = "123+12*23";

let num = str => new Function(`return ${str}`)();

console.log(num(displayText));

【讨论】:

  • 还是和eval()一样不安全
  • @Pablo 什么代码完全不“不安全”?
  • @Pablo:不完全是。它无权访问创建函数的本地范围(它只能访问全局范围)。
【解决方案2】:

您在这里寻找的是 Javascript 的原生 eval() 函数。

const displayText = "123+12*23";

const result = eval(displayText);

以上代码将产生表达式的结果,即 399。

【讨论】:

  • 三分钟前在评论部分给出了相同的答案,也与其他答案没有变化
猜你喜欢
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
相关资源
最近更新 更多