【问题标题】:How to extract multiple integers from a single array item如何从单个数组项中提取多个整数
【发布时间】:2014-05-28 09:32:19
【问题描述】:

这里有人可以告诉我修改下面的正则表达式的方法,以便我可以使用它为每个数组项获取多个整数吗?我可以使用 \d+ 检测到下面最上面的 str 中的一个整数。但是,该函数会与其他两个示例出错,在它下面,str = "7yes9 Sir2" 等。谢谢。

//str = "10 2One Number*1*";
//output -> [10, 2One, Number*1*] -> [10 + 2 + 1] -> 13

var str = "7Yes9 Sir2";  
//output -> NaN

//var str = "8pop2 1";
//output -> NaN

function NumberAddition(str) {  
  input = str.split(" ");  
  var finalAddUp = 0;  
  var finalArr = [];  

  for(var i = 0; i<=input.length-1; i++) {  
    var currentItem = input[i];  
    var regexp = /(\d+)/g;  
    finalArr.push(Number(currentItem.match(regexp)));  
    var itemToBeCounted = +finalArr[i];  
    finalAddUp += itemToBeCounted;  
  }  
  return finalAddUp;  
}  

console.log(NumberAddition(str));  

【问题讨论】:

  • 它失败了,因为Number 不允许在array that match returns 上进行操作,并且您(显然!)有超过 1 个匹配项。重新考虑你的方法。
  • 我昨天刚学了RegExp。这是针对用于学习目的的编码挑战。我不知道如何重新考虑我的方法。再说一遍:你能帮帮我吗?我以为我说过我不知道如何找到不止一个匹配项,无论如何。谢谢。
  • 但是您正在找到不止一个匹配项——这就是您收到错误的原因!在您的输入中尝试console.log(currentItem.match(regexp));。您必须重新考虑您的方法的原因是因为您已经假设您在循环中获得了 1 个匹配项。
  • 另外,顺便说一句,我并不怀疑你是否匹配不允许数字,我想补充一点,尽管如此,第一个数组示例确实有效。并且还包括Number的用法:即, //str = "10 2One Number*1*"; //输出 -> [10, 2One, Number*1*] -> [10 + 2 + 1] -> 13
  • 我能问一下为什么 Number 允许在那里,但在其他示例中不允许?只是好奇,因为我不明白,而且你似乎理解得更好。

标签: javascript arrays regex function


【解决方案1】:

试试看。喜欢

HTML

<span id="res"></span>

JS

var str = "7Yes9 Sir2";  
var matches = str.match(/\d+/g);
var res=0;

for (var i=0; i< matches.length; i++) {
    res += parseInt(matches[i],0);
}

$('#res').html(res);

看到这个工作fiddle

【讨论】:

  • 嘿。谢谢回复。抱歉,不幸的是,该网站只允许在解决手头的任务时实现 JavaScript。太糟糕了。
  • 你的意思是因为 jQuery?只需执行 document.getElementById('res').innerHTML = res; 而不是 jQuery 调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-08
  • 2019-09-11
  • 2010-10-14
  • 2017-07-05
相关资源
最近更新 更多