javascript - 使用多个嵌套分隔符拆分字符串

标签 javascript regex string split slice

这个字符串有问题:

{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/

相关文章:

Javascript window.scrollTo 在不同浏览器上的行为

c - 在C中初始化一个字符串为空字符串

Java 字节数组到字符串到字节数组

javascript - 从数据库调用函数以创建用户定义的函数

javascript - 返回匹配的先行组

javascript - <tr> 中的 onclick 事件

c# - 标签之间的正则表达式匹配文本

java - 如何使用模式匹配获取子字符串

java - java回文错误

C 控制台输入