如何使用JavaScript找到字符串中给出的所有整数的总和?

时间:2017-07-09 05:59:57

标签: javascript

如何使用JavaScript计算字符串中所有数字的总和?在下面的示例中,预期结果将是2 + 0 + 1 + 5。我的尝试如下。

var a = "weare20boysand15girls";
    var i;
    for(i=0; i<a.length; i++){
        var b = Number(a[i]);
        var c=0;
        c += b;
        console.log(c);

7 个答案:

答案 0 :(得分:1)

使用正则表达式查找所有整数。并使用reduce函数计算总和

&#13;
&#13;
{{1}}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以尝试:

var a = "weare20boysand15girls";

var res = a.replace(/\D+/g, '').split('').reduce((a, b) => {
  return parseInt(a) + parseInt(b);
});
console.log(res)

答案 2 :(得分:0)

检查ascii值以识别数字字符,然后求和

var sum = 0;
var a = "weare20boysand15girls";
for (var i; i < a.length; i++) {
  if (a.charCodeAt(i) >= 48 && a.charCodeAt(i) <= 57) {
    sum += a.charCodeAt(i) - 48;
  }
}
console.log(sum);

答案 3 :(得分:0)

我建议使用正则表达式解决方案。用数字[0-9]正则表达式将整个字符串中的数字分开,并使用循环对它们求和。

&#13;
&#13;
var a = "weare20boysand15girls";
const regex = /[0-9]/g;
var num = a.match(regex);
var result=0;
num.forEach(function(match){
    result+=parseInt(match);
});
console.log(result);
&#13;
&#13;
&#13;

答案 4 :(得分:0)

你可以

const input = "weare20boysand15girls";
const result =
    // Transform the string to an array.
    input.split("")
    // Use the reduce function to sum only the elements that are numbers.
    .reduce((sum, el) => isNaN(el) ? sum : sum + Number(el), 0);

答案 5 :(得分:0)

//试试这个:你必须将字符串拆分为一个数组,然后测试每个字符以便添加。

function sumNumbers_in_a_String() {

  var strName = "weare20boysand15girls";
  var strArray = strName.split("");
  var c = 0;
  var l = strArray.length;
  for (var i = 0; i < l; i++){
      if (parseInt(strArray[i])){
         var b = Number(strArray[i]);
         var c = c + b;
      }
 }
}

答案 6 :(得分:0)

在您询问 2015

的预期结果的问题中

给定的字符串是

var a = "weare20boysand15girls";

此解决方案的oneliner:

console.log([...a].filter( e => isFinite(e)).join(''));    

但是您将 8

的结果标记为正确答案

此解决方案的oneliner:

console.log([...a].filter( e => isFinite(e)).reduce((a, b)=>parseInt(a)+parseInt(b)));

只有在无法使用其他方式时才使用正则表达式...