这个字符串有问题:
{1 (Test)}{2 ({3 (A)}{4 (B)}{5 (C)})}{100 (AAA{101 (X){102 (Y)}{103 (Z)})}
我想使用 {
作为第一个分隔符,使用 }
作为最后一个分隔符来拆分它,但是正如您所看到的,我有嵌套的括号。
我怎样才能把这个字符串拆分成这样:
1 (Test)
2 ({3 (A)}{4 (B)}{5 (C)})
100 (AAA{101 (X){102 (Y)}{103 (Z)})
然后我需要为嵌套的括号再次拆分它。
最佳答案
您可以使用 /([\{\}])/
正则表达式拆分字符串并扫描生成的数组以提取标记和深度级别。
var string = "{1 (Test)}{2 ({3 (A)}{4 (B)}{5 (C)})}{100 (AAA{101 (X){102 (Y)}{103 (Z)})}";
var tokens = string.split(/([\{\}])/), result = [], depth = 0;
tokens.forEach(function scan(token){
if(!token) return;
if(token === "{") {
depth++;
return;
}
if(token === "}") {
depth--;
return;
}
result.push({depth: depth, token: token});
});
console.dir(result);
关于javascript - 使用多个嵌套分隔符拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21523184/