从javascript中的字符串中收集/提取数字

collecting/pulling numbers from a string in javascript

本文关键字:提取 数字 字符串 javascript      更新时间:2024-02-29

考虑下面的脚本。。

$('#accessories').editable({ 
    validate: function(value) {
              // solution will be placed here
    }
});

如果变量'value'的字符串值为"RUST-PROVING(2)、SPOILER(1)、ALARM(2)和SIDE-SKIRT(1)",我如何对'value'变量中的数字(2)(1)(2)。

看看这个FIDDLE

我留给你添加一些异常,比如如果数字是字符串中的最后一个,因为我的代码不会查找它,也不会添加它。

你所要做的就是循环字符串,检查它是否是一个数字,如果是,将它添加到var中,然后继续循环,当下一个字符不是数字时,添加你所构建的。

for (var i = 0; i < str.length; i++) {
    if (isNumber(str[i])) {
        strNumber += str[i];
    } else if (strNumber != "") {
        retVal += Number(strNumber);
        strNumber = "";
    }
}

尝试下面的代码。首先,您设置一个正则表达式来查找字符串中的数字,这将返回一个匹配数组,然后您可以将此数组传递到一个自定义函数中,该函数将数组中的所有数字相乘。

var str = "RUST-PROOFING (2),SPOILER (1),ALARM (2),SIDE-SKIRT (1)";
var re = /['d+]/g //Match only numbers (along the whole string)
var matches = str.match(re);
var total = multiply(matches); //Pass your array of matches to your multiply function;
alert(total); //4
function multiply(arr) { //Multiplies all numbers in an array and returns the total value;
    var num = 0;
    for(var i = 0, len = arr.length; i < len; i++) {
        num += parseInt(arr[i]);
    }
    return num;
}

看看小提琴

谢谢大家(尤其是Shryme和Mark)。。这是总结。。。希望这能在未来帮助像我这样的新手。。

$('#accessories').editable({ 
validate: function(value) {
    $ntot = add(value.toString());
    $('#npoints').editable('setValue', $ntot);
}
});
function add(str) {
var retVal = 0;
var strNumber = "";
for (var i = 0; i < str.length; i++) {
    if (isNumber(str[i]) && (str[i-1]=="(" || str[i+1]==")")) {
        strNumber += str[i];
    } else if (strNumber != "") {
        retVal += Number(strNumber);
        strNumber = "";
    }
}
return retVal;
}
function isNumber(n) {
    if (n == "") return false;
    return !isNaN(n);
}