【问题标题】:How to replace expression in a string with its value?如何用它的值替换字符串中的表达式?
【发布时间】:2014-05-16 22:03:46
【问题描述】:

对不起,如果问题措辞不好,但我想问的是,如何用两个捕获组的乘积替换 JS 中字符串的子字符串?明白我的意思,看看下面一行。我将如何执行如下任务:

expression.replace(regexp,parseFloat("$1")*parseFloat("$3"));

当“正则表达式”为/(\d+(\.\d+)?)\*(\d+(\.\d+)?)/ 而“表达式”为"20*5" 时?

它不起作用,我不确定为什么。 expression.replace(regexp,"$1_$3") 打印出20_5,所以为什么将"$1""$3" 放入parseFloat() 将它们的值从第一组和第三组的值更改为字符串"$1""$3"

如果您想知道,这是针对网站 GraphWidget 作为 PLTW 课程的 STEM 项目。

谢谢。

【问题讨论】:

标签: javascript regex replace parsefloat


【解决方案1】:

如果你这样做我认为没有区别:

"20*5".split('*').reduce(function(a,c){ 
   return  a <=0? c : a*c 
 },0);

这种方法的优点是它也可以与"20*5*3"一起工作无需更改代码

免责声明:我了解您可能希望使用正则表达式来解决您的问题。我只是提供问题的侧面视图。

【讨论】:

    【解决方案2】:

    你可以试试这个:

    "20*5".replace(
                     /(\d+(\.\d+)?)\*(\d+(\.\d+)?)/,
                     function (match, group1, group2, group3) { 
                       return parseFloat(group1)*parseFloat(group3) 
                     }
                  );
    

    查看此文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 2012-04-26
      • 2021-10-07
      • 1970-01-01
      • 2021-07-17
      • 2016-06-09
      相关资源
      最近更新 更多