我需要从字符串中获取所有金额,然后在java脚本中添加它们。我的字符串可以是,
"Discount 50GB + 1,000GB + Kit"
我的字符串格式是固定的,表示将在GB之前找到金额。我只需要抓住所有这些金额然后添加它们。所以我得到的结果是50 + 1000 = 1050
答案 0 :(得分:4)
这样可以解决问题:
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);
这会在字符串中添加每个GB (DEMO):
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”(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);
答案 1 :(得分:2)
快速脏一行XD
var str = "Discount 50GB + 1,000GB + Kit";
str.replace(/[^\+\d]/g,'').split('+').reduce(function(a, b) { return (+a) + (+b) })
说明:
+
)+
)拆分修剪过的字符串,因此我们得到一组数字字符串(和空字符串)reduce
方法中,将类似数字的字符串转换为实数并总结,而+""
变为数字0
。编辑:这是一个与前一个不同的标语。
var str = "Discount 50GB + 1,000GB + Kit + 60GB 80GB 10Gb";
str.replace(/[^\d\s]/g,'').split(/\s+/).reduce(function(a, b) { return (+a) + (+b) })
说明:
reduce
方法中,将类似数字的字符串转换为实数并总结,而+""
变为数字0
。为了更加小心和保证,您选择的答案也很好。