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)
得到一个看起来像这样的字符串
-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)