Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript分离这些字符串_Javascript_String - Fatal编程技术网

如何使用javascript分离这些字符串

如何使用javascript分离这些字符串,javascript,string,Javascript,String,我收集了一些字符串,如'36*'、'95'、'103*'、'1001*'、'2301' 我想把它们分成两部分,数字部分是整数部分,星号部分。 例:第一名36分,第二名95分,第三名103分,依此类推。我把它们全部加起来。如果找到星号,则将数字乘以某个因子 星号总是在末尾 var arr = ['36*' , '95' , '103*', '1001*' , '2301']; var t = []; var f = []; arr.forEach(function(e){if(e.indexOf(

我收集了一些字符串,如
'36*'、'95'、'103*'、'1001*'、'2301'


我想把它们分成两部分,数字部分是整数部分,星号部分。 例:第一名36分,第二名95分,第三名103分,依此类推。我把它们全部加起来。如果找到星号,则将数字乘以某个因子

星号总是在末尾

var arr = ['36*' , '95' , '103*', '1001*' , '2301'];
var t = [];
var f = [];
arr.forEach(function(e){if(e.indexOf("*") > 0){ t.push(e) } else { f.push(e) } } );

console.log(t); //asterisk values
#=> ["36*", "103*", "1001*"]
console.log(f); // other value
#=> ["95", "2301"]
如果要将星号元素数组中的每个元素乘以类似于10的因子

arr.forEach(function(e){if(e.indexOf("*") > 0){ t.push(parseInt(e)* 10) } else { f.push(parseInt(e)) } } );

 console.log(t); //asterisk values
#=> [360, 1030, 10010]
console.log(f); // other value
#=> [95, 2301]

您可以使用正则表达式提取所需的部分

var值=['36*'、'95'、'103*'、'1001*'、'2301'];
var parts=values.map(函数(x){
变量匹配=/(\d+)(\/\*\+\\-)?/.exec(x);
返回{
数字部分:匹配[1],
操作员:匹配[2]
};
});
然后可以访问原始数组中每个元素的数字或运算符部分。i、 e.
parts[2]。numericPart==95

正则表达式
(\d+)(\/\*\+\\-)?
可以分解如下

(\d+) - matches 1 or more digits and stores them in capture group 1
(\/|\*|\+|\-)? - matches a /*+- and stores it in capture group 2, this matches 0 or 1 times

此函数将接受输入并返回数字和特殊符号(*)


进一步解释你真正想做什么?我想把它们分为两部分:数字部分为整数部分和星号部分。例:第一名36分,第二名95分,第三名103分,依此类推。我把它们全部加起来。如果找到星号,则将数字乘以某个因子。您的意思是这样的
'36'*因子,'95','103'*因子,'1001'*因子,'2301'
function _seperateNum(value){
    var returnObj={}; // This object will contain number * special character(if)
     var replaceChar=""; 
     if(value.indexOf("*") !=-1){ // check if input has *
        replaceChar = value.replace(/[*]/g, ''); // replace it
       returnObj.num = parseInt(replaceChar); // convert to number
        returnObj.char = "*";
      }
      else{ // if no special charcater
       returnObj.num = parseInt(value);
     }
     return returnObj;
    }
    var a =_seperateNum("36*");
    console.log(a.num);
    var 
        arr = ['36*' , '95' , '103*', '1001*' , '2301'],
        sum = 0;
    for (var i in arr) {
        var item = arr[i];
        sum += parseInt(item.indexOf('*') != -1 ? item.replace('*', '') : item);
    }
    alert(sum);