从特定字符串中获取金额

Grab Amount from Specific String

本文关键字:获取 金额 字符串      更新时间:2023-09-26

我需要从字符串中获取所有金额,然后在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) })

解释:

  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. reduce方法中,将类似数字的字符串转换为实数并求和,而+""则变为数字0

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