我想从这个字符串中提取令牌并构建一个数组(这是一个简化的例子):
SELECT * FROM {token1} WHERE {token2}
Run Code Online (Sandbox Code Playgroud)
所以我有一个包含两个元素的数组:
myArray[0] = "token1"
myArray[1] = "token2"
有没有一种聪明的方法可以在不遍历字符串的情况下做到这一点?
我也不希望数组中有重复项,所以
The quick {token1} dog {token2} over the {token1} wall
会给;
myArray[0] = "token1"
myArray[1] = "token2"
(这样做的真正原因是在 SQL 语句中使用日期。)
米克
您可以使用替换在字符串上运行正则表达式循环并提取令牌:
var sql = 'SELECT * FROM {token1} WHERE {token2}';
var tokens = [];
sql.replace(/\{(.*?)}/g, function(a, b) {
tokens.push(b);
});
console.log(tokens);
Run Code Online (Sandbox Code Playgroud)