节点js将String分隔成数组

时间:2015-06-08 18:34:20

标签: javascript node.js extract

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

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

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

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

2 个答案:

答案 0 :(得分:0)

更新的答案

我记得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]。因此,您可以轻松地构建对象。

答案 1 :(得分:0)

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

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)