注意不能用正则表达式. 使用的知识点只能是js的语法范围.
先谢过了
例如:
Input: “We have 30 apples will be handed out to 10 students who need it, containing 5 foreigners ”.
Output: 30 + 10 + 5 = 45
注意不能用正则表达式. 使用的知识点只能是js的语法范围.
先谢过了
例如:
Input: “We have 30 apples will be handed out to 10 students who need it, containing 5 foreigners ”.
Output: 30 + 10 + 5 = 45
把字符串挨着扫描一遍不就完了……
function char2num(str){
let num = [],
ans = 0,
index = -1;
for(let i = 0; i < str.length + 1; i++) {
const now = parseInt(str[i]);
if(i < str.length && str[i] ==='.' || now !== NaN && now < 10 && now > -1) {
if(index === -1) {
index = i;
}
} else if(index !== -1) {
num.push(parseFloat(str.substring(index, i)));
ans += num[num.length - 1];
index = -1;
}
}
return(num.join(" + ") + " = " + ans);
}
var str = 'We have 30 apples will be handed out to 10 students who need it, containing 5 foreigners';
var arr = [],sum = 0;
arr = str.split(' ');
for(var i = 0; i < arr.length; i++){
if(!isNaN(parseInt(arr[i]))){
sum += parseInt(arr[i]);
}
}
console.log(sum);
//需要处理的字符串
var str = 'We have 30 apples will be handed out to 10 students who need it, containing 5 foreigners';
//处理函数
var onlyNumpluse = function(strArg){
//用空格将字符串截成数组
var strArr = strArg.split(' '),
sum = 0;
//循环判断非NaN的value相加
for(var i=0,len=strArr.length;i<len;i++){
if(!isNaN(parseInt(strArr[i]))){
sum += parseInt(strArr[i]);
}
}
//返回结果
return sum;
}
//调用
onlyNumpluse(str)//要求:从一串随机字符串中提取数字并相加
//要求:数字必须是连续数字,如ab30cd,必须提取30
//TODO:此方法未处理小数,如ab0.23cd,会提取23
function str2num(oldStr) {
if (oldStr == '') {
console.log('string is required');
} else {
//先去掉字符串的空格,再在首位分别加上‘aaa’和‘bbb’;
//首尾加上非数字字符串是为了防止原字符串首尾是数字而导致的提取错误;
var str = 'aaa' + oldStr.replace(/ /g,'') + 'bbb';
var notNumIndexArr = [];//非数字字符的序号组成的数组
var newArrFromStr = [];//由数字组成的数组
var ArrForSum;//剔除newArrFromAtr中的空字符串后的纯数字数组
var sum = 0;//输出的总和
//提取非数字字符串的序号
for (let i = 0; i < str.length; i++) {
if (isNaN(str.charAt(i))) {
notNumIndexArr.push(i);
}
}
//最重要的一步
//提取非数字字符串的序号中间的数字
for (let i = 0; i < notNumIndexArr.length; i++) {
newArrFromStr.push((str.substring(notNumIndexArr[i], notNumIndexArr[i + 1])).substring(1));//首字符是字母,需要从第二个字符提取
}
//console.log(notNumIndexArr);
//console.log(newArrFromStr);
//剔除数组中的空字符串
ArrForSum = newArrFromStr.filter(function (val) {
return val !== '';
});
//不需要剔除前几位是0的数字,如提取出来是003,相加时会当成3相加
//求和
for (let i = 0; i < ArrForSum.length; i++) {
sum += parseInt(ArrForSum[i]);
}
return sum;
}
}
var str = 'We have 30 apples will be handed out to 10 students who need it, containing 5 foreigners';
console.log(str2num(str));1 回答851 阅读✓ 已解决
1 回答1.1k 阅读
2 回答773 阅读
2 回答617 阅读
2 回答601 阅读
1 回答677 阅读
2 回答520 阅读