我需要从字符串中获取所有金额,然后在java脚本中添加它们。我的字符串可以是,
"Discount 50GB + 1,000GB + Kit"
我的字符串格式是固定的,这意味着数量将在 GB 之前找到。我只需要抓住所有这些数量,然后添加它们。所以我得到的结果是 50 + 1000 = 1050
这将解决问题:
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:
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);
您在下面的评论中提到也可能有"Gb"。您可以使用它来获取"GB"的结果"不区分大小写"(演示)
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);
快速脏单行样式 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(/[^ds]/g,'').split(/s+/).reduce(function(a, b) { return (+a) + (+b) })
解释:
- 修剪所有不是数字或空格的字符(单词分隔符)
- 用空格间隙(一个或多个连续的空格)拆分修剪后的字符串,因此我们得到类似数字的字符串数组(也许是空字符串)
- 在
reduce
方法中,将类似数字的字符串转换为实数并求和,而+""
则变为数字0
。
为了更加小心和保证,您选择的答案也很好。