我想知道jQuery是否可以在字符串中添加数字......
字符串只能添加到自身,如下面的示例所示。如果出现一个或多个字符串,则应将其组合。
所有可能的字符串:click here
可能的字符串示例:
+0.53 attack damage
+0.53 attack damage
= 1.06 attack damage
+8.75 mana
+8.75 mana
= 17.5 mana
每个都可以组合到 9次。
答案 0 :(得分:1)
遍历字符串的字符(通过制作长度为1的子字符串);一旦检测到数字或小数点,将起始位置保存在变量中。然后,一旦检测到不是数字或小数点或小数点后第二位(计算小数点数),数字就会结束;保存结束位置和voilà,你有数字的开始和结束位置,可以通过制作一个子串来获得它。
答案 1 :(得分:0)
var strs = [
"Hello 1 World",
"Hello 2 World"
];
var n = 0;
strs.forEach(function(str) {
str.match(/[\d|\.|\-]+/g).forEach(function(num) {
n+= window.parseFloat(num);
});
});
编辑:哦,那个"可能的字符串列表" (用百分比值等)改变了比赛。好吧,从这开始并改进实施:|
答案 2 :(得分:0)
这个正则表达式:
/((-|\+)?([0-9]+|)(\.?[0-9]+))/g
您可以像这样使用Array.prototype.reduce来累计数字
var str = 'Hello +0.50 World Hello 1 World Hello -10 World',
re = /((-|\+)?([0-9]+|)(\.?[0-9]+))/g,
sum;
sum = (str.match(re) || []).reduce(function (prev, current) {
if (Object.prototype.toString.call(prev) !== '[object Number]') {
prev = parseFloat(prev, 10);
}
return prev + parseFloat(current, 10);
}, 0);
// sum should be equal to -8.5 here
请注意,str.match(re)
可能会返回null
,因此我们只需确保在数组上调用reduce
。