对正则表达式产生的所有数字求和

时间:2016-03-19 02:23:49

标签: javascript regex math

我正在处理一个函数,该函数汇总了文本中的所有数字:



'use strict';

var sum = function(text, regex) {
  var match;
  return !!(match = text.match(regex || /\d+/g)) ?
    match.reduce(function(prev, curr) {
      return +prev + +curr;
    })
  : 0;
}

console.log(sum('1 12 40'));
console.log(sum('10 12 40'));
console.log(sum('1 12 510'));
console.log(sum('LLLLLLLL'));
console.log(sum('10 1'));




并不是用点数来编号:



    'use strict';

    var sum = function(text, regex) {
      var match;
      return !!(match = text.match(regex || /\d+/g)) ?
        match.reduce(function(prev, curr) {
          return +prev + +curr;
        })
      : 0;
    }

    console.log(sum('1.10 12.40 40.30'));




所以,我想请求帮助。我怎么能用指针对数字求和?

感谢。

3 个答案:

答案 0 :(得分:1)

使用匹配带小数点的数字的正则表达式

var sum = function(text, regex) {
  return (text.match(regex || /\d*(?:\.\d*)?/g) || [])
  .reduce(function(prev, curr) {
    return prev + +curr;
  }, 0);
}
document.write(sum('1.10 12.40 40.30'));

答案 1 :(得分:0)

如果UIView.animateWithDuration(2) { () -> Void in self.label.center = CGPointMake(self.view.center.x, self.label.center.y) self.again.center = CGPointMake(self.view.center.x, self.again.center.y) } 期望将数字作为字符串作为参数,可以将sumString.prototype.split() RegExp/\s/Array.prototype.map()一起用作回调

Number

答案 2 :(得分:0)

考虑到输入字符串的格式,您可以先使用String split()分割值,然后循环以汇总值:

function sum(text) {
  var arr = text.split(" ");
  var total = 0;
  for (var i in arr) {
    if (/[\d.]+/g.test(arr[i])) {
      total += parseFloat(/[\d.]+/g.exec(arr[i]));
    }
  }
  document.write("The sum is " + total);
}
sum("1.10 12.40 40.30");