从特定字符串获取金额
我需要从字符串中获取所有金额,然后将它们添加到java-script中。我的字符串就可以了,从特定字符串获取金额
"Discount 50GB + 1,000GB + Kit"
我的字符串格式是固定的,意味着量只会GB之前被发现。我只需要抓住所有这些数额然后添加它们。所以,结果我会得到的是50 + 1000 = 1050
这将这样的伎俩:
var sum = 0;
var arr = "Discount 50GB + 1,000GB + 7GB + 9GB hello 8GB Kit 10GB 10GB d".split('GB');
for (var i = 0 ; i<arr.length-1; i++) {
var x= arr[i].replace(/[^\d.]/g, '');
var b = parseInt(x,10)
sum += b;
}
alert(sum);
:
var arr = "Discount 50GB + 1,000GB + Kit".split('GB')
var b = arr[0].replace(/[^\d.]/g, '');
var c = arr[1].replace(/[^\d.]/g, '');
total = parseInt(b, 10) + parseInt(c, 10);
alert(total);
这将在您的字符串(DEMO)添加每GB 你已经在下面的评论中提到,也可能有'Gb'。你可以用它来得到结果 '不区分大小写' 为 'GB'(DEMO)
var sum = 0;
var search = "gb";
var regEx = new RegExp(search, "ig");
var replaceMask = "GB";
var result = 'Discount 50Gb + 1,000Gb + 7Gb + 9Gb hello 8gb Kit 10GB 10GB 5gb d'.replace(regEx, replaceMask);
var arr = result.split('GB');
for (var i = 0 ; i<arr.length-1; i++) {
var x= arr[i].replace(/[^\d.]/g, '');
var b = parseInt(x,10)
sum += b;
}
alert(sum);
壮观的把戏,我已经发射正则表达式... – 2014-12-07 15:29:06
有问题。我不知道字符串中的GB数量。你举的例子假设2 – user960567 2014-12-08 05:19:36
编辑它,现在你可以有多少GB你想在字符串@ user960567 – baao 2014-12-08 05:55:39
快速荤一个线型XD
var str = "Discount 50GB + 1,000GB + Kit";
str.replace(/[^\+\d]/g,'').split('+').reduce(function(a, b) { return (+a) + (+b) })
说明:
- 修剪所有不是数字或加号的字符(
+
) - 用加号分割修剪过的字符串(
+
),因此我们得到数组字符串(和空字符串) -
reduce
方法,将数字字符串转换为实数并加起来,而+""
变成数字0
。
编辑:这是从以前的一个liitle不同。
var str = "Discount 50GB + 1,000GB + Kit + 60GB 80GB 10Gb";
str.replace(/[^\d\s]/g,'').split(/\s+/).reduce(function(a, b) { return (+a) + (+b) })
说明:
- 修剪所有字符不是数字或空白(字分体)
- 分裂以空格间隙修整串(一个或多个连续空格),因此我们得到数组字符串(也许是空字符串)
- in
reduce
method,将类似数字的字符串转换为实数并加起来,而+""
变成数字0
。
为了更加小心和保证,您选择的答案也很好。
我不知道字符串中的GB数量。 – user960567 2014-12-08 05:20:36
@ user960567我也没有。如果字符串包含数字,这会给你总和,如果它没有,你不会得到任何东西。你可以编写一些随机字符串来测试我的RegExp。 – Leo 2014-12-08 05:25:19
使用此字符串测试“折扣50GB + 1,000GB +套件+ 60GB 80GB 10GB” – user960567 2014-12-08 05:31:15
只是想知道,你是否生成这个字符串? – 2014-12-07 15:29:01