Node js 将字符串分隔成数组

Node js Separate String into arrays

得到一个看起来像这样的字符串

-FirstName (Some Random Name) -LastName (Some Random Last Name) -Age 30

我正在寻找从该字符串中提取名字、姓氏和年龄的最佳和最简单的方法。所以我可以将这些数据存储在数据库中。

标签的顺序可以是随机的。

更新的答案

我记得 indexOf 比正则表达式更快。所以这就是你问题的答案:

var a, i, flags, result, flag, entry, start, end;

a = "-FirstName Some Random Name -LastName Some Random Last Name -Age 30"

flags = ["-FirstName", "-LastName", "-Age"];
result = [];
for (i = 0; i < flags.length; i++) {
    flag = flags[i];
    entry = a.search(flag);
    lookup_start = entry + flag.length;

    end = a.indexOf("-", lookup_start);
    end = (end == -1) ? a.length : end;
    result.push(a.slice(lookup_start, end).trim())
}

console.log(a);
console.log(result);

现在您将拥有一个映射 - flags[i] -> result[i]。所以你可以很容易地建立一个对象。

使用正则表达式最简单。问题是名称中可以有破折号和空格。所以我会尝试这样的事情:

var tags = []

'-FirstName Some Random Name -LastName Some Random Last Name -Age 30'.replace(/\-([\w]{3,9})\s?((\w|\s|(\w\-))+)?\s?/gm, function () {
  tags.push(arguments)
  return ''
})

console.log(tags)