Javascript从字符串中提取标记

时间:2017-02-17 15:45:45

标签: javascript

我想从这个字符串中提取标记并构建一个数组(这是一个简化的例子):

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语句中使用日期。)

米克

4 个答案:

答案 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);