2014-12-07 130 views
1

我需要从字符串中获取所有金额,然后将它们添加到java-script中。我的字符串就可以了,从特定字符串获取金额

"Discount 50GB + 1,000GB + Kit" 

我的字符串格式是固定的,意味着量只会GB之前被发现。我只需要抓住所有这些数额然后添加它们。所以,结果我会得到的是50 + 1000 = 1050

+1

只是想知道,你是否生成这个字符串? – 2014-12-07 15:29:01

回答

4

这将这样的伎俩:

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); 
+2

壮观的把戏,我已经发射正则表达式... – 2014-12-07 15:29:06

+0

有问题。我不知道字符串中的GB数量。你举的例子假设2 – user960567 2014-12-08 05:19:36

+0

编辑它,现在你可以有多少GB你想在字符串@ user960567 – baao 2014-12-08 05:55:39

2

快速荤一个线型XD

var str = "Discount 50GB + 1,000GB + Kit"; 
str.replace(/[^\+\d]/g,'').split('+').reduce(function(a, b) { return (+a) + (+b) }) 

说明:

  1. 修剪所有不是数字或加号的字符(+
  2. 用加号分割修剪过的字符串(+),因此我们得到数组字符串(和空字符串)
  3. 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) }) 

说明:

  1. 修剪所有字符不是数字或空白(字分体)
  2. 分裂以空格间隙修整串(一个或多个连续空格),因此我们得到数组字符串(也许是空字符串)
  3. in reduce method,将类似数字的字符串转换为实数并加起来,而+""变成数字0

为了更加小心和保证,您选择的答案也很好。

+0

我不知道字符串中的GB数量。 – user960567 2014-12-08 05:20:36

+0

@ user960567我也没有。如果字符串包含数字,这会给你总和,如果它没有,你不会得到任何东西。你可以编写一些随机字符串来测试我的RegExp。 – Leo 2014-12-08 05:25:19

+0

使用此字符串测试“折扣50GB + 1,000GB +套件+ 60GB 80GB 10GB” – user960567 2014-12-08 05:31:15