javascript - NodeJS循环遍历字符串并获得准确的输出

标签 javascript node.js string

在 NodeJS 中我有这样一个字符串

"Package=Package&Qty=1&Price=123?Package=Package Two&Qty=3&Price=702?Package=Package Three&Qty=1&Price=199?Package=Package One&Qty=4&Price=852?"

在字符串中可以看到有多个Package、Qty和Price。现在我想为每个数量和包裹发送电子邮件。因此,如果您看到包裹二,它的数量为 3。因此,在这种情况下,它将发送 3 封包含包裹和价格的电子邮件。所以基本上它会为每个数量发送带有相应包装和价格的电子邮件。

所以现在我有这样的代码

var string = "Package=Package&Qty=1&Price=123?Package=Package Two&Qty=3&Price=702?Package=Package Three&Qty=1&Price=199?Package=Package One&Qty=4&Price=852?";
var packArr = string.split('?');
var PackageName;
var PackagePrice;
for (var i = 0; i < packArr.length; i++) {
  if( packArr[i].length > 0 ) {
    let packageQty = packArr[i].split('&');
    for (var j = 0; j < packageQty.length; j++) {
      if( packageQty[j].match(/Package=/i) ) {
        PackageName = packageQty[j].replace(/Package=/g,'');
          console.log(PackageName);
      }

      if( packageQty[j].match(/Price=/i) ) {
        PackagePrice = packageQty[j].replace(/Price=/g,'');
          console.log(PackagePrice);
      }

      if (packageQty[j].match(/Qty=/i)) {
        var ret = packageQty[j].replace(/Qty=/g,'');
        var Pck = Number(ret);
        for (var k = 1; k <= Pck; k++) {
          console.log(k);
          console.log('Package Name ' + PackageName);
          console.log('Package Price ' + PackagePrice);
          //send email with Package Name, Package Price 
          if( k == Pck ) {
            break;
          }
        }
      }
    }
  }
}

上面的代码实际上不能正常工作。它没有为每个循环正确获取包和价格。那么有人可以告诉我如何以简单的方式做到这一点吗?任何帮助和建议都将非常感激。

最佳答案

这是使用 querystring 的更简洁的方法包

const string = "Package=Package&Qty=1&Price=123?Package=Package Two&Qty=3&Price=702?Package=Package Three&Qty=1&Price=199?Package=Package One&Qty=4&Price=852?";

const qs = require('querystring');

// We split the string into multiple valid query strings.
// We strip the empty item due to the '?' at the end using .filter(Boolean)
const items = string.split('?').filter(Boolean);

// We loop through each group
for(const query of items) {
    // Parse the query string of each group
    const { Package, Qty, Price } = qs.parse(query);

    for(let i = 0; i < Number(Qty); i++) {
        // We send the email here <Qty> times.
        console.log('Package Name ' + Package);
        console.log('Package Price ' + Price);
    }
}

关于javascript - NodeJS循环遍历字符串并获得准确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49641608/

相关文章:

javascript - 如何检查字符串是否是有效的查询

string - Matlab字符到字符串的转换问题。使用什么功能?

javascript - angularjs ng-将嵌套数组重复到一个唯一列表中

mysql - 如何让我的机器人向人们发送消息,告诉他们他们的余额?

Javascript 数组为项目返回不正确的值?

mysql - 如何在express.js中使用sequelize在mysql表中插入数据

node.js - 将自定义查询参数添加到 Passport auth0 策略验证请求

将字符串复制到结构体 C 中

javascript - 使用 Javascript 将 div 放置在距窗口中心特定距离的位置

javascript - 上传后触发功能