Javascript 如何找到匹配大括号在数据中的位置?

Javascript 如何找到匹配大括号在数据中的位置?,javascript,html,node.js,angularjs,Javascript,Html,Node.js,Angularjs,我是新的编码,目前我正在工作的NodeJs文件系统模块 我正在处理一个文件,其中包含大量数据,这些数据以字符串形式存储 我的问题是,我无法找到匹配的右括号和“}”的位置 { // I know the index of '{' { { } { } } { { } } } // have to find position here. 假设你想有一个程序来做它 只需逐个比较,直到找到匹配的大括号。代码可能与未测试的类似-

我是新的编码,目前我正在工作的NodeJs文件系统模块

我正在处理一个文件,其中包含大量数据,这些数据以字符串形式存储

我的问题是,我无法找到匹配的右括号和“}”的位置

{  // I know the index of '{'
  {
    {
    }
    {
    }
   }
   {
    {
    }
  }
 } // have to find position here.

假设你想有一个程序来做它

只需逐个比较,直到找到匹配的大括号。代码可能与未测试的类似-

    var string = "{{{}}}";

    var leftCurlyBraceIndex = 0, // index of the '{' to which you need to find the matching '}'
        rightCurlyBracesTobeIgnored = 0,
        rightCurlyBraceIndex = -1;

    for (var i = leftCurlyBraceIndex + 1, l = string.length; i < l; i++) {
       if (string[i] == "}") {
         if (rightCurlyBracesTobeIgnored == 0) {
            rightCurlyBraceIndex = i; break;
         } else {
            rightCurlyBracesTobeIgnored -= 1;
         }
       } else if (string[i] == "{"){
         rightCurlyBracesTobeIgnored += 1;
       }
    }

   alert(rightCurlyBraceIndex )

如果您使用的是NodeJS:您是否可以将其解释为JSON?您使用的IDE是什么?我只使用notepad++。我主要使用javascript和nodeJs作为服务器部分。我不认为应该将其解释为json,因为它是一个动态生成的文件。@FBOEST看起来不对,文件是如何生成的?它能生成一个xml好的xml解析器exist或JSON,所以你只需要JSON.parse?var string={{{}}//在我的文件中var data=//整个文件数据;所以我必须使用var string=data@普拉萨德
var str = '{{{}{}}{{}}}', matchBrace;   
matchBrace = function(str, i) {
    var index = 0, leftBraces = [], len;
    if(str.charAt(i) === '}') {
        return -1;
    }
    for(index = i, len = str.length; index < len; ++index) {
        if(str.charAt(index) === '{') {
            leftBraces.push('{');
        }
        if(str.charAt(index) === '}') {
            if(leftBraces.length === 1) {
                return index;
            }
            leftBraces.pop()
        }
     }
};