从特定字符串中获取金额

时间:2014-12-07 15:22:17

标签: javascript jquery

我需要从字符串中获取所有金额,然后在java脚本中添加它们。我的字符串可以是,

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

我的字符串格式是固定的,表示将在GB之前找到金额。我只需要抓住所有这些金额然后添加它们。所以我得到的结果是50 + 1000 = 1050

2 个答案:

答案 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) })

说明:

  1. 修剪所有不是数字或加号(+
  2. 的字符
  3. 使用加号(+)拆分修剪过的字符串,因此我们得到一组数字字符串(和空字符串)
  4. reduce方法中,将类似数字的字符串转换为实数并总结,而+""变为数字0

  5. 编辑:这是一个与前一个不同的标语。

    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. reduce方法中,将类似数字的字符串转换为实数并总结,而+""变为数字0
    4. 为了更加小心和保证,您选择的答案也很好。