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

时间:2014-09-25 10:05:04

标签: javascript html5 node.js angularjs

我是Coding的新手,目前我正在研究NodeJs文件系统模块。

我正在处理一个文件,其中包含大数据和存储为字符串的数据。

我的问题是,我无法找到匹配的括号和位置'}'。

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

2 个答案:

答案 0 :(得分:0)

假设你想要一个程序来做它!!!

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

    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 )

答案 1 :(得分:0)

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()
        }
     }
};