我想从这个字符串中提取标记并构建一个数组(这是一个简化的例子):
SELECT * FROM {token1} WHERE {token2}
所以我有两个元素的数组:
myArray [0] =“token1”
myArray [1] =“token2”
有没有一种聪明的方法可以在不迭代字符串的情况下完成此操作?
我也不想在数组中重复,所以
The quick {token1} dog {token2} over the {token1} wall
会给予;
myArray [0] =“token1”
myArray [1] =“token2”
(真正的原因是,在SQL语句中使用日期。)
米克
答案 0 :(得分:2)
您可以使用replace在字符串上运行正则表达式循环并拉出标记:
?strsplit
答案 1 :(得分:1)
您可以试试这个regex:
(?:{)([^}]*)(?:})
示例代码:
var str = 'SELECT * FROM {token1} WHERE {token2}';
var regex = new RegExp('(?:{)([^}]*)(?:})', 'g');
var match, myArray = [];
while (match = regex.exec(str)) myArray.push(match[1]);
console.log(myArray);
答案 2 :(得分:0)
02-17 17:41:11.449: W/WindowManager(984): Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 6: TypedValue{t=0x0/d=0x0}
答案 3 :(得分:0)
var sql = 'SELECT * FROM {token1} WHERE {token2}';
var tokens = [];
sql.replace(/\{(.*?)}/g, function(a, b) {
tokens.push(b);
});
console.log(tokens);